Angular4:ng-template中的组件引用 [英] Angular4: Component reference inside ng-template
本文介绍了Angular4:ng-template中的组件引用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我对角度4还是陌生的. 我想获取ng-template内的组件(validation-alerts)
I am new to angular 4. I want to get handle of a component(validation-alerts) inside ng-template
<ng-template #content let-c="close" let-d="dismiss" size="600px" >
<validation-alerts [formGroup]="requestTypeForm"></validation-alerts>
<div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix head" tabindex="-1">
<span id="ui-id-6" class="ui-dialog-title popup-title">Client Name Look Up </span>
<button (click)="d('Cross click')" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only ui-dialog-titlebar-close"
role="button" aria-disabled="false" title="Close">
<span class="ui-button-icon-primary ui-icon ui-icon-closethick popup-close-icon"></span><span class="ui-button-text">Close</span>
</button>
</div>
<form (ngSubmit)="onSubmit()" [formGroup]="requestTypeForm">
<div id="scrollContainer-popup" class="popup ui-dialog-content ui-widget-content" style="width: auto; min-height: 0px; max-height: none; height: auto; display: block; padding: 0px 10px 0px">
<div class="body">
<p class="mb"><b>Select the matching client name:</b></p>
<input type="text" formControlName="clientId" name="clientId"
id="clientId" style="width:30%" />
<div class="btnBar nbdr" style="padding-top: 0px;" >
<a (click)="c('close')" class="btn3"><span>Cancel</span></a>
<button type="button" class="btn" (click)="c('submit')">Select</button>
</div>
</div>
</div>
</form>
</ng-template>
我尝试使用@ ViewChild,@ ViewChildren,但在AfterContentInit方法中未定义.
I tried using @ViewChild, @ViewChildren but getting undefined in AfterContentInit method.
@ViewChild(ValidationAlertsComponent)
private validationAlerts: ValidationAlertsComponent;
组件类
@Component({
selector: 'provision-modal',
templateUrl: 'provision.modal.html',
encapsulation: ViewEncapsulation.None,
styles : [ '.namelookup .modal-content { width: 600px;}']
})
export class ProvisionModal implements AfterContentInit {
@ViewChild('content') contentTemplate: TemplateRef<any>;
@ViewChild(ValidationAlertsComponent)
private validationAlerts: ValidationAlertsComponent;
ngAfterContentInit() {
console.log('Ng after content init '+ this.validationAlerts);
}
推荐答案
您应该在ngAfterViewInit生命周期挂钩之后访问视图子级.
You should access the view child after the ngAfterViewInit life cycle hook.
请参见 https://angular.io/guide/lifecycle-hooks
所以改变
ngAfterContentInit() {
console.log('Ng after content init '+ this.validationAlerts);
}
到
ngAfterViewInit() {
}
这篇关于Angular4:ng-template中的组件引用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文