每个组件中的 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吧),附加到viewProviders
的AppComponent
s数组(所以它只会为应用程序创建一次,是一个单例)。
假设使用 TypeScript,UserService
class 必须用 @Injectable()
修饰,这样您就可以在任何组件和其他服务中自动连接它。将您的全局用户对象作为实例变量存储在其中。这很好,因为您现在可以在一个地方处理您的用户对象。
喂!
我可以通过属性指令和输入共享父容器的 属性,但如果子组件被 <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吧),附加到viewProviders
的AppComponent
s数组(所以它只会为应用程序创建一次,是一个单例)。
假设使用 TypeScript,UserService
class 必须用 @Injectable()
修饰,这样您就可以在任何组件和其他服务中自动连接它。将您的全局用户对象作为实例变量存储在其中。这很好,因为您现在可以在一个地方处理您的用户对象。