使用 graphql 查询时如何使用异步管道?
how can i use async pipe when I'm using graphql queries?
我有一个 angular 项目,在我的组件中,我使用 graphql 获取数据,并在 HTML 中显示结果图像。但是一会儿,我在控制台中收到此错误:
ERROR TypeError: Cannot read property 'image' of undefined
这是我的 html 代码:
<div
[style.background-image]="
'url(http://localhost:1337' + (data.article.image.url )+ ')'
"
>
</div>
在我的组件中我有:
ngOnInit(): void {
this.queryArticle = this.apollo
.watchQuery({
query: ARTICLE_QUERY,
variables: {
id: this.route.snapshot.paramMap.get("id")
}
}).valueChanges.subscribe(result => {
this.data = result.data;
this.loading = result.loading;
this.errors = result.errors
});
}
现在,我该如何避免这个错误?
您不需要使用 async
管道,我认为您需要使用安全导航运算符。
将此放入您的 HTML(添加问号):
<div
[style.background-image]="
'url(http://localhost:1337' + (data?.article?.image?.url )+ ')'
"
>
</div>
基本上会保证数据存在,数据里面有文章,文章里面有图片。
详细了解安全导航运算符here。
有一种方法可以使用 async
管道,但我看到你 subscribe
到 observable 并且你为 data
、loading
和 errors
并且使用 async
管道获取这些属性将涉及更多工作。
我有一个 angular 项目,在我的组件中,我使用 graphql 获取数据,并在 HTML 中显示结果图像。但是一会儿,我在控制台中收到此错误:
ERROR TypeError: Cannot read property 'image' of undefined
这是我的 html 代码:
<div
[style.background-image]="
'url(http://localhost:1337' + (data.article.image.url )+ ')'
"
>
</div>
在我的组件中我有:
ngOnInit(): void {
this.queryArticle = this.apollo
.watchQuery({
query: ARTICLE_QUERY,
variables: {
id: this.route.snapshot.paramMap.get("id")
}
}).valueChanges.subscribe(result => {
this.data = result.data;
this.loading = result.loading;
this.errors = result.errors
});
}
现在,我该如何避免这个错误?
您不需要使用 async
管道,我认为您需要使用安全导航运算符。
将此放入您的 HTML(添加问号):
<div
[style.background-image]="
'url(http://localhost:1337' + (data?.article?.image?.url )+ ')'
"
>
</div>
基本上会保证数据存在,数据里面有文章,文章里面有图片。
详细了解安全导航运算符here。
有一种方法可以使用 async
管道,但我看到你 subscribe
到 observable 并且你为 data
、loading
和 errors
并且使用 async
管道获取这些属性将涉及更多工作。