我有响应对象,我刚刚分配给“this”对象。
private data: Object = {};
this.http.post('url', { })
.subscribe(
res => {
console.log(res);
this.data = res;
if(this.data.datacentersinfo.length) {}
...
如果我访问datacentersinfo
对象,则表示对象类型上不存在属性datacentersinfo
。由于此错误,我无法生成dist文件夹。
答案 0 :(得分:3)
您有几种解决方案:
1 - 将数据输入任何数据并且不进行实例化:
private data: any;
2 - 改变你的状况:
if(this.data && this.data.datacentersinfo && this.data.datacentersinfo.length) {}
这可以解决您的问题。
答案 1 :(得分:2)
我建议您使用强类型对象,并执行以下操作
public static void setSearchTextHighlightSimpleHtml(TextView textView, String fullText, String searchText) {
searchText = searchText.replace("'", "");
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
fullText = fullText.replaceAll("(?i)(" + searchText + ")", "<span style=\"background-color:#FCFF48;\"><b><big><font color='#a10901'>$1</font></big></b></span>");
textView.setText(Html.fromHtml(fullText, Html.FROM_HTML_MODE_LEGACY), TextView.BufferType.SPANNABLE);
} else {
fullText = fullText.replaceAll("(?i)(" + searchText + ")", "<b><big><font color='red'>$1</font></big></b>");
textView.setText(Html.fromHtml(fullText), TextView.BufferType.SPANNABLE);
}
} catch (Exception e) {
textView.setText(fullText);
}
}
答案 2 :(得分:1)
我会发布两种方法来做到这一点。首先是旧的方式(看起来你正在尝试这样做),然后是使用HTTP客户端的首选方式
旧HTTP
private data: Object = {};
this.http.post('url', { })
.map((res: Response) => res.json())
.subscribe((res:any) => {
console.log(res);
this.data = res;
if(this.data.datacentersinfo.length) {}
});
HTTP客户端
private data: Object = {};
this.http.post<any>('url', { })
.subscribe((res:any) => {
console.log(res);
this.data = res;
if(this.data.datacentersinfo.length) {}
});
我不是这样做的最佳方式,你应该创建一个处理HTTP请求的服务组件,然后从组件中调用该服务并在那里订阅它的响应。