ped*_*nez 2 javascript angular
I am using angular 5 and I want to create new instances of a component on demand.
This is the code I currently have:
app.component.ts:
import { Component } from '@angular/core';
import { MyComponent } from './mycomp/my.component';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
constructor() {}
addCmp() {
console.log('adding');
// Add an instance of MyComponent code goes here ?
}
}
Run Code Online (Sandbox Code Playgroud)
app.component.html
<button (click)="addCmp()" >Add New MyComponent below</button>
Run Code Online (Sandbox Code Playgroud)
MyComponent.html:
<div>I am MyComponent</div>
Run Code Online (Sandbox Code Playgroud)
How can I do this?
这是您自己创建组件的方法:(别忘了销毁它!在componentRef上调用destroy()可以做到这一点)
父组件:
@ViewChild('componentHolder', { read: ViewContainerRef }) componentHolder: ViewContainerRef;
constructor(private componentFactoryResolver: ComponentFactoryResolver) { }
public createComponent(): void {
const componentFactory = this.componentFactoryResolver.resolveComponentFactory(MyComponent);
const componentRef = this.componentHolder.createComponent(componentFactory);
}
Run Code Online (Sandbox Code Playgroud)
父组件HTML:
<button (click)="createComponent()">Add New MyComponent below</button>
<div #componentHolder ></div>
Run Code Online (Sandbox Code Playgroud)
在NgModule中添加MyComponent:
...
imports: [
BrowserModule,
FormsModule,
RouterModule.forRoot(appRoutes),
],
entryComponents: [
MyComponent
],...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4058 次 |
| 最近记录: |