【发布时间】:2021-05-16 19:12:02
【问题描述】:
如何用new关键字实例化角度组件?
将以下想象成一个无模板的组件:
import { Component } from '@angular/core';
@Component({
selector: 'my-component',
})
export class MyComponent {
constructor(private myService: MyService)
}
我知道只有在模板中找到选择器标签时才会实例化角度组件。
但是…… 如何使用 new 关键字实例化上述内容? 因为我的组件不需要模板。
但它应该是带有@component 装饰器的角度组件。 (因为我需要依赖注入的特性)
但问题是当我创建一个新组件时,如下所示:
const comp = new MyComponent()
它还要求在实例化时也将服务实例传递给它的构造函数。像这样”
const comp = new MyComponent(new MyService())
当我们再次传入的服务依赖于其他服务时,就变得更加困难了。
像这样……
const comp = new MyComponent(new MyService(new AnotherService(new YetAnotherService(... so on))))
那么有解决办法吗?
Angular 的 DI 很不错。因为我们没有任何类似上述的问题。它会自动创建所有注入的服务。 new 关键字也可以做到这一点。
注意我尝试使用普通的打字稿类。但我还是不喜欢。我想自己使用角度组件。
这可能吗?
【问题讨论】:
-
有没有办法...请告诉我!!!
-
为什么要这么做?有什么特别的原因吗?
-
是的,这都是关于画布的。所以我不需要任何模板。但是我仍然需要依赖注入的功能,因为我的组件依赖于很多服务。
-
所以我需要使用新关键字创建组件的能力。但这样做的问题是我将不得不手动传递服务。
-
这不是唯一的问题 - 管理这些服务的实例可能很困难。注入器保留它们,因此组件可以共享相同的实例
标签: angular