0

我构建了一个名为lang.service.ts. 它所做的只是一种key: value机制。每当我需要它到我的组件时,我都会将它导入并声明它,constructor然后我将它用作{{lang('key').text}}. 到目前为止,一切都很好。

问题是我注意到我将为每个组件加载它,例如 forview-header.component.tsview-footer.components.ts许多其他组件。我从来没有使用过 Angular 1,但是 IIRC,我可以在那里做类似的事情rootScope.lang(..),它可以完成我正在寻找的东西。有没有办法在 Angular 2 中做类似的事情?

4

1 回答 1

1

如果您在根组件中注册服务,则所有子组件都可以访问该服务。

在您的根组件上...

import { Component } from '@angular/core';

import { YourService } from './my-servive.service.ts';
import { ChildComponent } from './child-component.component.ts';

@Component({
  selector: 'root-component',
  providers: [YourService],
  directives: [ChildComponent],
  template: `<child-component></child-component>`
})
export class RootComponent {}

在您的子组件上...

import { Component } from '@angular/core';
import { YourService } from './my-servive.service.ts';

@Component({
  selector: 'child-component'
})
export class ChildComponent {
  contructor(private myService: YourService) {}
}

希望这对您有所帮助。

于 2016-06-17T21:21:55.053 回答