【发布时间】:2017-08-10 08:52:27
【问题描述】:
我创建了单击以动态加载组件视图,但每次单击都是单独的。我想要一个函数,我通过函数传递一个字符串,而不是在我的函数中输入该字符串来加载视图。
这是一个工作中的笨蛋 http://plnkr.co/edit/ZXsIWykqKZi5r75VMtw2?p=preview
组件
@Component({
selector: 'my-app',
template: `
<div>
<h2>Lets dynamically create some components!</h2>
<button (click)="createHelloWorldComponent()">Create Hello World</button>
<button (click)="createWorldHelloComponent()">Create World Hello</button>
<dynamic-component [componentData]="componentData"></dynamic-component>
</div>
`,
})
export class App {
componentData = null;
createHelloWorldComponent(){
this.componentData = {
component: HelloWorldComponent,
inputs: {
showNum: 9
}
};
}
createWorldHelloComponent(){
this.componentData = {
component: WorldHelloComponent,
inputs: {
showNum: 2
}
};
}
}
想要的是一个函数,并从数组中定义一个变量,该变量在(点击)中传递并加载视图。 这是一个尝试的 plunker: http://plnkr.co/edit/HRKGhCCEfkOhNjXbr6C5?p=preview
@Component({
selector: 'my-app',
template: `
<div>
<h2>Lets dynamically create some components!</h2>
<li *ngFor="let item of myMenu">
<button (click)="loadView({{ item.viewname }})">{{ item.id }}</button>
</li>
<dynamic-component [componentData]="componentData"></dynamic-component>
</div>
`,
})
export class App {
componentData = null;
myMenu = {};
constructor() {
this.myMenu = myMenu;
}
loadView(viewName){
this.componentData = {
component: viewName,
inputs: {
showNum: 9
}
};
}
}
const myMenu = [
{
id: 1,
viewname: 'HelloWorldComponent'
},
{
id: 2,
viewname: 'WorldHelloComponent'
},
];
【问题讨论】: