我的问题是关于 Angular 2/4/5 模块。
从模块中使用 @ViewChild 时无法使它工作,孩子是未定义的。在我将它用作简单组件之前,它运行良好。*试过@ViewChildren 也...同样
代码示例 -
app.module.ts -
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { MyNewModule} from './modules/MyNewModule/MyNewModule.module';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent,
],
imports: [
BrowserModule,
MyNewModule,
],
providers: [],
bootstrap: [AppComponent],
})
export class AppModule { }
app.component.ts -
import { Component, OnInit } from '@angular/core';
import { MyNewModule} from './modules/MyNewModule/MyNewModule.module';
@Component({
selector: 'app-root',
template: `<button (click)="Print()">Print child</button>
<my-new-module></my-new-module>
`,
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
constructor(private MyModule:MyNewModule){}
ngOnInit(){}
Print(){
this.MyModule.Print();
}
}
模块/MyNewModule/MyNewModule.module -
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MyNewModule} from './MyNewModule.component';
@NgModule({
imports: [
CommonModule,
],
declarations: [MyNewModule],
providers: [MyNewModule],
exports: [MyNewModule],
})
export class MyNewModule{ }
模块/MyNewModule/MyNewModule.ts-
import { Component, OnInit, ViewChild, ViewContainerRef, ComponentFactoryResolver } from '@angular/core';
@Component({
selector: 'my-new-module',
template:`<ng-template #Container></ng-template>`
})
export class MyNewModule implements OnInit {
@ViewChild('Container', {read: ViewContainerRef}) private container: ViewContainerRef;
constructor(){}
ngOnInit(){}
Print(){
console.log(this.container); => undefined
}
}
当尝试在线搜索答案时,我发现的唯一解决方案是尝试@ViewChildren,或者它可能会发生,因为视图尚未初始化。所以我什至尝试在 5 秒的超时时间内完成它......结果相同。再次使用相同的代码,但作为一个简单的应用程序而不是模块工作正常。
谢谢阅读 !:)