【问题标题】:Angular2 Global user object in every component每个组件中的Angular2全局用户对象
【发布时间】:2016-09-25 09:07:10
【问题描述】:

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

顺便说一句,我在 app.component 中通过异步调用获得了全局用户。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢,我很笨。我使用服务通过异步获取用户 Obj,但没有想到服务可以在获取一次后存储对象并且只返回对象本身. :)
    【解决方案2】:

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

    【讨论】:

    • 也谢谢你,我接受了@JoVer 的回答,因为他速度更快。你们两个都帮我找到了解决办法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多