gpt4 book ai didi

typescript - Angular2 将父服务注入(inject)子服务

转载 作者:太空狗 更新时间:2023-10-29 17:44:02 25 4
gpt4 key购买 nike

鉴于我有简单的 app 组件:

import {Component} from 'angular2/core';
import {bootstrap} from 'angular2/platform/browser';
import {AppComponent} from 'ng2-easy-table/app/app.component';
import {ConfigService} from "./config-service";

@Component({
selector: 'app',
directives: [AppComponent],
providers: [ConfigService],
template: `
<ng2-table [configuration]="configuration"></ng2-table>
`
})
export class App {
constructor(private configuration:ConfigService) {}

}
bootstrap(App, []);

ng2-table,它通过npm install安装,放在node_modules目录下。

import {Component, OnInit, Input} from 'angular2/core';

@Component({
selector: 'ng2-table',
})

export class AppComponent implements OnInit{
@Input configuration;
constructor() {
console.log("configuration: ", this.configuration); // <-- null
}

ngOnInit() {
console.log("configuration: ", this.configuration); // <-- null
}
}

和这个配置服务:

import {Injectable} from "angular2/core";
@Injectable()
export class ConfigService {
public searchEnabled = true;
public orderEnabled = true;
public globalSearchEnabled = true;
public footerEnabled = false;
public paginationEnabled = false;
public exportEnabled = true;
public resourceUrl = "http://beta.json-generator.com/api/json/get/E164yBM0l";
}

app 组件中,我放置了 ng2-table 组件。 ng2-tableapp 是根组件,所以我不允许使用 @Input() (这就是为什么 [configuration]="configuration" 不起作用(遵循此答案 https://stackoverflow.com/a/33155688/1168786 )。
问题是 - 我如何从 app 组件中注入(inject)一些服务到 ng2-table 组件,但不使用 @Input()

我如何将一些配置传递到我的 ng2-table,或者更简单的是,我如何从 node_modules 初始化组件,它需要在构造函数中进行一些配置?

这是组件链接:https://github.com/ssuperczynski/ng2-easy-table/tree/master/app

最佳答案

只要未在子组件的 providers 属性中明确指定,Angular 的依赖项注入(inject)将为子组件提供与父组件相同的 ConfigService 实例。这是由于 Angular 的分层 DI 模型,您可以在他们的 docs 中找到更多信息。 .根据代码示例,看起来 ConfigService 可能不使用 DI,因此您可能还想看看将其转换为 Injectable:DI info

关于typescript - Angular2 将父服务注入(inject)子服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36518422/

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