我想創建一個「my-form-group」組件,它由一個標籤,任何類型的輸入元素(input,checkbox,...)和一個用於驗證結果的div組成。 我想使用內容投影在標籤後插入輸入。事情是這樣的:在angular2中訪問任意子節點
<form [ngFormModel]="myForm" (ngSubmit)="onSubmit()">
<my-form-group>
<input type="text"
class="form-control"
[ngFormControl]="myForm.controls['name']">
</my-form-group>
<form>
組件看起來是這樣的:
@Component({
selector: 'my-form-group',
template: `
<div class="form-group">
<label for="name">Name<span [ngIf]="name.required"> *</span></label>
<ng-content></ng-content>
<div [hidden]="name.valid || name.pristine" class="alert alert-danger">
Please check your input
</div>
</div>`
})
...
我想用投影組件的狀態,以隱藏或顯示「必需的」星號和驗證股利。據我所知,可以通過使用@ContentChild()
和ngAfterContentInit()
訪問投影組件,但我認爲,我必須有一個特殊的組件才能使用它。
如果我不知道確切的組件,訪問投影組件的控制器的最佳方式是什麼?
你會用什麼來查詢'@ContentChildren()' ? AFAIK只能將模板變量或組件/指令類型用作「選擇器」。 –
你需要注入'ElementRef',然後你可以使用'this.elementRef.nativeElement.querySelectorAll(...)'來使用CSS選擇器。 –
但這不會給'ComponentRef'權利?所以使用'ElementRef' –