[英]How to resolve value of dynamically added component in Angular 2?
I have modal component consists of device information in which i am dynamically adding user <user.component.ts>
given below. 我的模态组件由设备信息组成,我在其中动态添加下面给出的用户
<user.component.ts>
。 It's getting added & rendered successfully but somehow i am unable to fetch the details of selected user in modal <modal.component.ts>
. 它已成功添加和呈现,但是以某种方式我无法在modal
<modal.component.ts>
获取所选用户的详细信息。
modal.component.ts modal.component.ts
@Component({
selector: 'modal',
templateUrl: './modal.component.html'
})
export class ModalComponent {
constructor(injector: Injector,
componentFactoryResolver: ComponentFactoryResolver) {}
@ViewChild('userContainer', { read: ViewContainerRef }) userContainer: ViewContainerRef;
cmp: ComponentRef<UserListComponent>;
addComponent() {
const factory = this.componentFactoryResolver.resolveComponentFactory(UserListComponent);
this.cmp = this.userContainer.createComponent(factory);
}
}
user.component.ts user.component.ts
@Component({
selector: 'user',
templateUrl: `<select [(ngModel)]="user">
<option *ngFor="let user of users" [ngValue]="user">{{user.name}}</option>
</select>`
})
export class UserComponent {...}
Use an EventEmitter
or Observable
that emits values on change 使用
EventEmitter
或Observable
在更改时发出值
@Component({
selector: 'user',
templateUrl: `<select [(ngModel)]="user">
<option *ngFor="let user of users" [ngValue]="user">{{user.name}}</option>
</select>`
})
export class UserComponent {
@Output() userChange:EventEmitter = new EventEmitter();
private _user:any;
get user () {
return this._user;
}
set user(val) {
this._user = val;
this.userChange.emit(val);
}
}
and subscribe to the changes like: 并订阅以下更改:
addComponent() {
const factory = this.componentFactoryResolver.resolveComponentFactory(UserListComponent);
this.cmp = this.userContainer.createComponent(factory);
this.cmp.instance.userChange.subscribe(val => console.log(val));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.