如果同时在HTML中包含组件以及通过DI注入组件,为什么会出现StaticInjector错误

时间:2019-10-07 08:01:50

标签: angular angular6

我有一个使用ValidateSessionComponent的组件LoginFormComponent。我在LoginFormComponent的HTML中使用了ValidateSessionComponent中的ValidateSessionComponent

到目前为止,这个方法工作正常。然后,我决定通过DI在LoginFormComponent

中包含对ValidateSessionComponent的引用
constructor(private loginForm2:LoginFormComponent,private helper:HelperService,private dialogService:DialogBoxService,private activatedRoute:ActivatedRoute, private router:Router, private userManagementService:UserManagementService) { }

这开始导致错误StaticInjectorError(DynamicTestModule)[ValidateSessionComponent -> LoginFormComponent]: StaticInjectorError(Platform: core)[ValidateSessionComponent -> LoginFormComponent]: NullInjectorError: No provider for LoginFormComponent!

为什么我开始出现错误?

1 个答案:

答案 0 :(得分:1)

因为DI仅适用于提供商。

组件不是提供程序。

如果您希望获得对子元素的引用,请改用ViewChild

@ViewChild(LoginFormComponent, { static: true }) loginForm: LoginFormComponent;