1
私はカスタム選択コントロールを思い付くしようとしている中でinnerHTMLのために静的なテキストで大丈夫働くは、ネストされたコンポーネント
<my-select>
<my-option>Option 1</my-option>
<my-option>Option 2</my-option>
...
</my-select>
を動作していない結合します。私はバインディングを導入した場合しかし、
<my-select>
<my-option *ngFor="let option of options">{{option}}</my-option>
</my-select>
{{option}}
は常に空の文字列としてレンダリングする(私が{{option}}
を交換した場合、test
はその後、すべてが再び働いていると言います)。ここには私のコンポーネントがあります:
@Component({
selector: 'my-select',
template: `
<ul>
<li *ngFor="let option of options">
{{option.text}}
</li>
</ul>
`
})
export class SelectComponent {
options: OptionComponent[] = [];
addOption(option): OptionComponent {
this.options.push(option);
}
}
@Component({
selector: 'my-option',
template: `
<div #wrapper>
<ng-content></ng-content>
</div>
`,
directives: []
})
export class OptionComponent implements AfterContentInit {
@ViewChild('wrapper') wrapper: ElementRef;
text: string;
constructor(private select: SelectComponent) { }
ngAfterContentInit() {
let text = this.wrapper.nativeElement.innerHTML;
this.text = text ? text : 'EMPTY';
this.select.addOption(this);
}
}
これを動作させるにはどうすればいいですか?
編集:ほとんど忘れていた、here's a plnkr問題を示しています。
''はネイティブ '
@ThorstenWestheider実際に妥当と思えます:) – PierreDuc
@ThorstenWestheider私は 'nativeElement'を削除しようとしましたが、失敗しました。しかし、' select' - > 'option' thingy :)のためのかなりの解決策を考え出しました。[http: //plnkr.co/edit/FupYOwHwa9K7jvmGskFJ?p=preview](http://plnkr.co/edit/FupYOwHwa9K7jvmGskFJ?p=preview) – PierreDuc