Angular2每个组件中的全局用户对象

时间:2016-05-27 06:38:38

标签: dependency-injection angular angular2-routing angular2-directives

HY! 我可以通过属性指令和输入共享父容器的属性,但如果子组件被<router-outlet>拉入,则它不起作用。有关如何与每个组件共享的任何建议吗?

顺便说一句,我在app.component中使用异步调用获取全局用户。

2 个答案:

答案 0 :(得分:3)

在这种情况下,请使用https://angular.io/docs/ts/latest/cookbook/component-communication.html

中说明的共享服务
@Injectable()
export class User {
  ...
}

@Component({
  selector: 'my-app',
  providers: [User],
  ...
})
export class AppComponent {}


@Component({
  selector: 'routed-comp',
  providers: [],
  ...
})
export class RoutedComponent {
  constructor(private user:User) {}

  /* use this.User here */
}

答案 1 :(得分:3)

使用服务怎么样?只需编写一个服务(让我们称之为UserService),将其附加到AppComponent的{​​{1}}数组(因此它只会为应用程序创建一次并且是单例)。 / p>

假设使用TypeScript,viewProviders类必须使用UserService进行修饰,以便您可以在任何组件和其他服务中自动连接它。将全局用户对象存储为实例变量。这很好,因为您现在可以在一个地方处理您的用户对象。