Angular 使用ngComponentOutlet创建动态组件的依赖项注入问题
项目需要使用ngComponentOutlet指令动态创建组件。动态组件将通过将数据注入构造函数来接收数据。那么,如何在构造函数中作为参数传递这些数据呢 我已经创建了一个示例,链接是 项目结构为:Angular 使用ngComponentOutlet创建动态组件的依赖项注入问题,angular,angular7,Angular,Angular7,项目需要使用ngComponentOutlet指令动态创建组件。动态组件将通过将数据注入构造函数来接收数据。那么,如何在构造函数中作为参数传递这些数据呢 我已经创建了一个示例,链接是 项目结构为: HomeComponent—起点 LoadComponents模块-一个延迟加载的模块,包含2个组件 (i) LoadComponents-路由“/load”的默认值 (ii)组件1组件-将从LoadComponents创建的动态组件 LoadComponents具有以下创建代码: 内容模型-需要
Error: StaticInjectorError(AppModule)[Component1Component -> Content]
目前,我已经通过使用插件“ng dynamic component”解决了项目问题,它的工作方式很有魅力。但我必须应用Angular的ngComponentOutlet指令。您正在向组件注入
内容,因此它应该是可注入的:
@Injectable({
providedIn: 'root',
})
export class Content {
@Input() public Code: string;
@Input() public HTML: string;
}
您的固定
注意:在你的问题中总是包含令人不安的代码 您正在向组件注入内容
,因此它应该是可注入的:
@Injectable({
providedIn: 'root',
})
export class Content {
@Input() public Code: string;
@Input() public HTML: string;
}
您的固定
注意:在你的问题中总是包含令人不安的代码 服务和组件在角度上有不同的用途
服务是一个广泛的类别,包含任何价值、功能或价值
应用程序需要的功能。服务通常是具有
狭隘、明确的目的。它应该做一些具体的事情
这很好
Angular将组件与服务区分开来,以增加模块化
和可重用性。通过分离组件的相关视图
从其他类型的处理功能,您可以
组件类精简高效
由于您在content.module.ts内使用的是可注入装饰器,因此不应使用
@输入装饰器。然后不要用新的关键字初始化对象。使用new关键字实例化对象用于创建不可注入的对象。
参考:
content.model.ts
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class Content {
Code: string ;
HTML: string;
}
示例:服务和组件在角度上的用途不同
服务是一个广泛的类别,包含任何价值、功能或价值
应用程序需要的功能。服务通常是具有
狭隘、明确的目的。它应该做一些具体的事情
这很好
Angular将组件与服务区分开来,以增加模块化
和可重用性。通过分离组件的相关视图
从其他类型的处理功能,您可以
组件类精简高效
由于您在content.module.ts内使用的是可注入装饰器,因此不应使用
@输入装饰器。然后不要用新的关键字初始化对象。使用new关键字实例化对象用于创建不可注入的对象。
参考:
content.model.ts
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class Content {
Code: string ;
HTML: string;
}
示例:您可以共享stackblitz编辑链接吗?对不起。这是你能分享stackblitz编辑链接吗?对不起。在这里它解决了这个问题,但是当我从LoadComponent注入数据时,Component1并没有显示数据,只是显示了一个空白对象。我知道它将注入一个新的内容实例,但我希望它的属性从LoadComponent填充。它解决了问题,但当我从LoadComponent注入数据时,Component1没有显示数据,只是显示一个空白对象。我知道它将注入一个新的内容实例,但我希望它的属性是从LoadComponet填充的。谢谢,这个问题已经解决了。我将内容模型注入另一个组件,然后它显示空白对象。我希望以前的值会保留在这个模型对象中,因为DI使用Singleton!!!你注射了哪种成分?我在本地回购中试过。我的问题是,我在错误的模块中添加了组件。在LoadComponents模块中添加组件后,实际上注入的模型对所有人都是相同的。如果您试图使用延迟加载在应用程序之间共享单例,请检查此项:谢谢,这已得到解决。我将内容模型注入另一个组件,然后它显示空白对象。我希望以前的值会保留在这个模型对象中,因为DI使用Singleton!!!你注射了哪种成分?我在本地回购中试过。我的问题是,我在错误的模块中添加了组件。在LoadComponents模块中添加组件后,注入的模型确实与所有组件相同。如果您试图使用延迟加载在应用程序之间共享单例,请检查此项: