在角5
让我们创建一个基于字符串动态组件说我有这给了我这样的一个API:在角5
{ title: 'title1',
type: 'FullComponent'
},
{
title: 'title2',
type: 'HalfComponent'
},
{
title: 'title3',
type: 'HalfComponent'
},
{
title: 'title4',
type: 'ThirdComponent'
},
{
title: 'title5',
type: 'ThirdComponent'
},
{
title: 'title6',
type: 'ThirdComponent'
},
我想基于这些type
值动态生成组件。
// app.component.ts ngOnInit() {
this.getWidget()
.subscribe(
data => {
},
error => {
???
}
);
}
getWidget() {
return this.http.get('www.api.com');
}
data
返回上面的json。 我该怎么做才能生成这些组件(这些组件已经使用Angular CLI创建,因此它们已经存在)? 谢谢:)
回答:
我想创建一个组件管理器,它将使FullComponent,HalfComponent或ThirdComponent在输入的功能:
manager.component.html
<ng-container *ngIf="component === 'FullComponent'"> <app-full-component></app-full-component>
</ng-container>
<ng-container *ngIf="component === 'HalfComponent'">
<app-half-component></app-half-component>
</ng-container>
<ng-container *ngIf="component === 'ThirdComponent'">
<app-third-component></app-third-component>
</ng-container>
manager.component.ts
应该有一个输入:
import { Component, OnInit, Input } from '@angular/core'; @Component({
selector: 'app-manager',
templateUrl: './manager.component.html',
styleUrls: ['./manager.component.css']
})
export class ManagerComponent implements OnInit {
@Input() component: string;
constructor() { }
ngOnInit() {
}
}
在您的app.component.ts
中,您将数据传递给数组:
// app.component.ts data: Any[] = [];
ngOnInit() {
this.getWidget()
.subscribe(
data => {
this.data = data;
},
error => {
???
}
);
}
getWidget() {
return this.http.get('www.api.com');
}
最后,在app.component.html
你叫*ngFor
它迭代数据,并通过type
到管理器组件:
<ng-container *ngFor='let d of data'> <app-manager [component]="d.type"></app-manager>
</ng-container>
以上是 在角5 的全部内容, 来源链接: utcz.com/qa/263239.html