@Host

Specifies that an injector should retrieve a dependency from any injector until reaching the host element of the current component.

How to use

@Injectable() class Car { constructor(@Host() public engine:Engine) {} }

Description

For more details, see the Dependency Injection Guide.
Example


class OtherService {}

class HostService {}

@Directive({selector: 'child-directive'})

class ChildDirective {

 logs: string[] = [];

 constructor(@Optional() @Host() os: OtherService, @Optional() @Host() hs: HostService) {

 // os is null: true

 this.logs.push(`os is null: ${os === null}`);

 // hs is an instance of HostService: true

 this.logs.push(`hs is an instance of HostService: ${hs instanceof HostService}`);

 }

}

@Component({

 selector: 'parent-cmp',

 viewProviders: [HostService],

 template: '<child-directive></child-directive>',

})

class ParentCmp {

}

@Component({

 selector: 'app',

 viewProviders: [OtherService],

 template: '<parent-cmp></parent-cmp>',

})

class App {

}

//parentservice 是child的host,再上层就不是了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容