角度2 rc 1、TypeScriptで書かれています。ディレクティブまたはコンポーネントを属性ディレクティブに挿入するにはどうすればよいですか?
私はセレクタmyDirective
と属性ディレクティブを持っています。その目的は、頻繁に再利用するhtmlの部分を構築することです。その作業を行うために、一致するクラスはカスタムコンポーネントと別の属性ディレクティブにアクセスする必要があります。私はmyDirective
のクラス内に属性ディレクティブまたはコンポーネントを挿入する方法を考え出すのに問題があります。
@Directive({selector: '[myDirective]'})
export class MyDirective{
constructor(private renderer:Renderer, private elementRef:ElementRef) {
let el = elementRef.nativeElement; //capture the HTML element host
let innerElement = renderer.createElement(el,'my-component',null);
renderer.setElementAttribute(innerElement,'myOtherDirective','');
}
}
使用法:<div myDirective></div>
生成されたHTML:<div><my-component myOtherDirective=''></my-component></div>
問題がmy-component
とmyOtherDirective
が角テンプレートパーサによって処理されていない、そしてもちろん、ブラウザがそれらを認識しないということです。
属性ディレクティブに別のディレクティブまたはコンポーネントを挿入するにはどうすればよいですか。
ここで属性ディレクティブを誤って使用していますか?コンポーネントはより適していますか?
私は応答を待っている間に同じ結論に達し、コンポーネントを構築しました。私は、コンポーネントが適切であるときと属性指示があるときとの間の明確な境界を見つけるのが少し難しいと思う。私は、ビューテンプレートが必要な場合は、コンポーネントを使用する必要があるということが、私が思いつくことができる最高のものだと思います。提案のための親指;私はまだ別のディレクティブに属性ディレクティブを挿入する方法を知ります。 – BeetleJuice
それはまさに違いです。コンポーネントにはビューがあり、ディレクティブにはありません。 –