Javascript 依赖注入组件
是否可以以某种方式在Angular中注入依赖项组件?我希望能够做一些类似于您在服务方面可以做的事情,例如:Javascript 依赖注入组件,javascript,angular,typescript,angular8,angular-dependency-injection,Javascript,Angular,Typescript,Angular8,Angular Dependency Injection,是否可以以某种方式在Angular中注入依赖项组件?我希望能够做一些类似于您在服务方面可以做的事情,例如: my.module.ts: providers: [ { provide: MyService, useClass: CustomService } ] 我曾尝试在包装器组件中使用*ngIf=condition,但它随后会抱怨没有为我不希望使用的组件提供服务。当然,您可以为特定注入令牌提供任何值常量、函数和类。您可以找到一些示例,其中包含我们将要制作的
my.module.ts:
providers: [
{
provide: MyService,
useClass: CustomService
}
]
我曾尝试在包装器组件中使用*ngIf=condition,但它随后会抱怨没有为我不希望使用的组件提供服务。当然,您可以为特定注入令牌提供任何值常量、函数和类。您可以找到一些示例,其中包含我们将要制作的组件 您可以创建自己的注入令牌,并提供您想要的任何东西和组件
/* In tokens.ts */
const MY_TOKEN_NAME = new InjectionToken<MyAmazingComponent>('MY_TOKEN_NAME')
/* In module */
providers: [
{ provide: MY_TOKEN_NAME, useClass: MyAmazingComponent }
]
如果组件和注入组件之间存在父子关系,则完全有可能。 如果你有这样的结构
@Component( {
selector:"app-parent",
template:" <app-child> </app-child>"
} )
export class ParentComp { ...}
现在,当您请求子组件所在的父组件时,Angular DI将为您注入它
如果您希望注入组件而不是父子关系,例如,您希望将sidenav组件注入到sidenav之外的某个表组件中,这几乎是不可能实现的。不建议也这样做,但这是可能的。如果您想这样做,您可能应该创建共享服务,该服务将在这些组件之间共享状态。谢谢您的帮助。它在html文件中是什么样子,我想在其中替换组件。是吗?哦,对不起,我误解了你的情况。您最好通过DI放弃访问父/子。最好的做法是使用输入/输出或存储在服务中的某些条件来组织此通信,访问的不是component.condition,而是service.condition对不起,我应该澄清一下,我希望将组件注入html,类似于使用ngIf的方式,但我不想为设置为*ngIf=false的组件提供服务
@Component( {
selector:"app-parent",
template:" <app-child> </app-child>"
} )
export class ParentComp { ...}
@Component({
selector:"app-child",
template:"I am child"
})
export class ChildComponent{
constructor(private parentComp:ParentComponent){
}
}