【发布时间】:2019-03-14 17:17:23
【问题描述】:
我有一个带有 href 的 html 标签的组件。我希望那个 href 的值来自我已经实现并且我订阅的角度服务,但是 href 值没有通过。 我认为这是一个时间问题 - 页面在返回订阅之前呈现。我该如何补救?
<a href="{{links?.someLink1}}"> Click it </a>
然后在我的 ts 我有类似的东西:
this.myService.getLinks().subscribe(linkList => {
this.links = linkList;
console.dir(this.links); //this returns the json object so i know it is there
});
如果我这样写html:
<a href="{{links.someLink1}}"> Click it </a>
我在尝试读取未定义的属性“someLink1”时遇到错误。
更新
我认为这与我缺乏对 Typescript 的理解有关。在我的 ts 我想声明
links: any;
但是当我这样做时,我的模板无法解析 link.someLink1
如果我将 ts 声明更改为 links ={};
那么它将起作用。但我不明白为什么?
【问题讨论】:
-
试试
<a href="{{links?.someLink1}}">Click it</a>。 -
通过说明我认为这是一个时间问题,我假设您甚至不确定是什么导致了您的问题。
links设置是否正确?那个订阅回调实际上被调用了吗?为什么不从调试代码开始,然后在模板中的某处添加类似links | json的内容,以检查值是否已设置。 -
请创建一个minimal reproducible example 并用它更新您的问题。我推荐stackblitz.com
-
那行不通。如果我省略了?我得到“无法读取未定义的属性‘someLink1’”。我认为页面渲染时链接对象还没有准备好。
-
我有 console.logs 通知我当 sub 返回时正在设置链接
标签: angular typescript