Angular - ng-content 的模板参考
Angular - template reference on ng-content
我需要在 Angular 应用中围绕输入呈现动态内容。
我的想法是创建一个自定义组件,然后使用 ng-content
将行为绑定到该输入。像这样:
<my-wrapper>
<input type="text" otherAttributes...>
</my-wrapper>
我的包装器如下所示。
HTML:
<span>
<ng-content #myRef></ng-content>
<button (click)="perform(myRef)">Click me!</button>
</span>
和.ts函数:
perform(myRef: HTMLIntpuElement) {
myRef.value = 'something else';
}
现在,我知道 ng-content
实际上并不存在,而且我不能真正对其进行引用,因为该内容可能不止一个元素,但是有没有办法找到它 "Angular way",而不是使用蛮力,即原生元素?
我认为您的问题可以通过@ContentChildren/@ContentChild 解决。
它们与 @ViewChildren/@ViewChild 相似,但 @ContentChild 会查看 ng-content 而 @ViewChild 不会。
<input type="text" #myRef>
在打字稿文件中:
@ContentChildren('myRef') items: QueryList<ElementRef>;
我需要在 Angular 应用中围绕输入呈现动态内容。
我的想法是创建一个自定义组件,然后使用 ng-content
将行为绑定到该输入。像这样:
<my-wrapper>
<input type="text" otherAttributes...>
</my-wrapper>
我的包装器如下所示。
HTML:
<span>
<ng-content #myRef></ng-content>
<button (click)="perform(myRef)">Click me!</button>
</span>
和.ts函数:
perform(myRef: HTMLIntpuElement) {
myRef.value = 'something else';
}
现在,我知道 ng-content
实际上并不存在,而且我不能真正对其进行引用,因为该内容可能不止一个元素,但是有没有办法找到它 "Angular way",而不是使用蛮力,即原生元素?
我认为您的问题可以通过@ContentChildren/@ContentChild 解决。 它们与 @ViewChildren/@ViewChild 相似,但 @ContentChild 会查看 ng-content 而 @ViewChild 不会。
<input type="text" #myRef>
在打字稿文件中:
@ContentChildren('myRef') items: QueryList<ElementRef>;