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

Angular2 Global user object in every component

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

顺便说一句,我在 app.component.

中通过异步调用获得了全局用户

在这种情况下,使用 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 */
}

使用服务怎么样?写一个服务(我们就叫它UserService吧),附加到viewProvidersAppComponents数组(所以它只会为应用程序创建一次,是一个单例)。

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