gpt4 book ai didi

angular - NG2 : How can I access parent component generically?

转载 作者:太空狗 更新时间:2023-10-29 17:05:51 26 4
gpt4 key购买 nike

在开始之前请注意,我最初是在 angular2 github 站点上作为功能请求提出这个问题的。但是请求已关闭,建议我将其张贴在这里。在这里,我只是重复我最初的要求。但是,您可以通过以下链接找到一些讨论: https://github.com/angular/angular/issues/10448

我需要能够获得对父组件的一般引用,而子组件不必知道父组件的类型。基本上我需要这样的东西(伪代码):

    @Component({
template: '<child></child>'
directives: [Child]
})
class ParentComponent{}

@Component({ selector: 'child' })
class ChildComponent{
constructor(@Parent() _parent: any){}
}

基本上我需要 ChildComponent_parent 字段来引用 ParentComponent。但是请注意 _parent 的类型是 any。它是 any 因为它可以是任何字面意思。 ChildComponent 是一个通用组件,可以被任何类型的其他组件使用。我知道有解决这个问题的方法,但它们都需要 child 知道 parent 的类型。它是这样的:

    @Component({ selector: 'child' })
class ChildComponent{
constructor(_parent: ParentComponent){}
}

但同样,这对我不起作用,因为 ChildComponent 可以用在任何类型的其他组件中,而且谁都不知道另一个组件的类型。所以我需要的是一些通用的方法来注入(inject) ChildComponent 其在组件树中设置的父组件,而 ChildComponent 不知道父类型。有谁知道我怎样才能做到这一点?

最佳答案

您可以使用 Injector API同样。

对于 Angular2 最新版本和旧版本:

import { Injector } from '@angular/core';
import {AppComponent} from "./app.component";

@Component({ selector: 'child' })
class ChildComponent{
constructor(private inj:Injector){
let parentComponent = this.inj.get(AppComponent);
console.log(parentComponent);
}
}

关于angular - NG2 : How can I access parent component generically?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40025761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com