Angular:ng build --prod的'Object'类型不存在属性'data'

时间:2019-01-25 06:02:16

标签: angular

在ng build --prod的'Object'类型上不存在属性'data'。

我的service.ts

getSlogan() {
 return this.http.get(this._slogan)
}

我的component.ts

import ...
.
.
export interface Iheader {
  facebook_link: string
  id: number
  instagram_link: string
  line_link: string
  pinterest_link: string
  site_slogan: string
  tel: string
  youtube_link: string
 }
 export class HeaderComponent implements OnInit {

 socials : any
 data : Iheader

 ngOnInit() {
 // get site data
  this.apiservice.getSlogan()
   .subscribe(data => {
    this.socials = data
  });

我的html

<a target="_blank" [href]="socials?.data.pinterest_link">

在ng build --prod上出现错误“类型'Object'上不存在属性'data'。

我的api数据如下

 [
   status: 200,
   data: {
     data: {
       pinterest_link: "url"
     }
   }
 ]

2 个答案:

答案 0 :(得分:1)

您似乎将整个服务器响应存储在socials变量中。

所以您需要像这样访问数据:

@Test

更好的解决方案是像这样先存储

<a target="_blank" [href]="socials?.data.data.pinterest_link">

,您需要将社交变量默认设置为空数组。

ngOnInit() {
   // get site data
   this.apiservice.getSlogan()
   .subscribe(response => {
      this.socials = response.data
   });
}

答案 1 :(得分:0)

socials?.data.pinterest_link应该是错误。 “社交?”只检查其未定义/空或已定义。但是,如果已定义,则不能保证对象上存在属性“数据”。您需要类似“ socials?.data?”之类的东西,但是href会出错。

此外,您有一个双重嵌套的“数据”。也许这也是一个错误。

喜欢做

Row     object_id   type_level_0_array  type_level_1_array  type_level_2_array   
1       1           2                   24                  234  
                                        23       
2       2           4                   34                  349  
                    3                   46                  465