Angular 2アプリケーションでは、剣道のComboboxコンポーネントを使用します。このコンポーネントは、ランタイム中に動的に作成されたコンポーネントにラップされます。作成のコードは非常に簡単である:角度がコンポーネントを作成しなければならない場合動的コンポーネントが正しく結合されない
let factory = this.resolver
.resolveComponentFactory(ComboboxComponent);
nextTo.createComponent(factory);
nextTo
変数を表します。
@ViewChild('container', { read: ViewContainerRef })
container: ViewContainerRef;
container
変数は、HTMLテンプレートでdiv
を表します。
NB:コンポーネントはngAfterViewInit
イベント中に作成されます。作成中にエラーはスローされません。
剣道のコンポーネントは正しくインスタンス化され、初期化されますが、作成後にデータに影響を与えると、コンポーネントはバインディングを認識せず、何もしません。何か案は ?
コンポーネントのHTML:
<kendo-combobox [data]="listItems"></kendo-combobox>
活字体:
@Component({
templateUrl: `combobox.component.html`,
selector: 'combobox',
styleUrls: [
'combobox.component.css'
]
})
export class ComboboxComponent extends FieldComponent {
public listItems: Array<string> = ["X-Small", "Small", "Medium", "Large", "X-Large", "2X-Large"];
}
NB2:FieldComponent
は、我々はすべてのコンポーネントのための世界的なアクションに使用する抽象クラスです。
EDIT1:私は最終的に何が問題かを見つけることができますが、何が間違っているかはわかりません。 DOMを調べると、<div role='combobox'>
が隠されていることがわかります。これはすべてのデータを含むコンボボックスです。だから私はデータなしで表示された2番目のコンボボックスを持っていますか?
これは[Webコンポーネント](http://docs.telerik.com/kendo-ui/third-party/webcomponents)の統合によるものです。 WebコンポーネントとAngularの両方が、カスタムタグ/コンポーネントセレクタの同じ名前を使用します。 – rusev
うん、私は参照してください;-)多分あなたはこの醜い問題をドキュメントまたは他のどこかに通知する必要がありますか?私たちのような同様のプロジェクトは、コンポーネントを移行したいと思っています。 –
実際には、Webコンポーネントのサポートはすでに_ *。all_ bundleから削除されています。新しいバージョンのスクリプトにアップグレードすると、この動作がなくなります。 – rusev