【问题标题】:Angular 2 Injectable is missing objectAngular 2 Injectable 缺少对象
【发布时间】:2018-01-05 03:37:56
【问题描述】:

我创建了一个简单的可注入对象,用于模拟测试,直到我想实现我的提供程序来检索用户数据。它看起来像这样:

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

@Injectable()
export class Identity {
   public userInfo: {id: 1};
}

我在我的 a 组件中请求它,如下所示:

export class TabsPage {
    constructor(public identity: Identity) {
        console.log(this.identity.userInfo);
    }
}

身份注入正常,但 userInfo 未定义,这是怎么回事?如何通过我的提供者传递数据?

【问题讨论】:

    标签: javascript angular typescript ionic2


    【解决方案1】:

    您正在为用户信息定义一个类型(打字稿类型),而不是一个值,因此它是undefinedpublic userInfo = { id: 1 }; 初始化它的值。 (请注意,您的问题中有一个冒号 :,而不是 =

    【讨论】:

    • 谢谢!有趣的是它是如何编译的。我只是在等待问题的时间限制到期,当堆栈允许我时,我会接受这个作为答案
    • 为什么不能编译?
    • @johnny5 它可以编译,因为您定义的打字稿对象文字类型是有效的,并且始终将其未来值锁定为 { id: 1 },如果您尝试将其值分配给不同的值,则保持该类型,它会出错。所以它编译得很好,因为它从未被初始化为任何东西。
    • @Juan 感谢您的解释我不知道类型脚本允许您定义这样的常量。如果可以的话,我会支持你两次
    • 耶! @johnny5 想到 null 或 undefined 之类的类型,它们只允许您设置这些值。在这种情况下,它有点像可变属性的只读类型,通过打字稿,您可以在编译时将其锁定为特定值。本问答针对此主题:stackoverflow.com/questions/44560995/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 2017-04-12
    • 2017-05-25
    • 2023-03-15
    • 1970-01-01
    • 2016-10-20
    • 2017-07-10
    相关资源
    最近更新 更多