Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 调用函数时角度img src未知_Angular_Typescript - Fatal编程技术网

Angular 调用函数时角度img src未知

Angular 调用函数时角度img src未知,angular,typescript,Angular,Typescript,我需要通过调用返回图像路径的函数来动态更改img src,但是当我使用下面的代码时,图像元素显示为 组件。ts: getMedia(row) { this.sharedDataService.inventoryRows.forEach(function(elem){ if(row.vin === elem.vin){ console.log(elem.media[0].href); //logs string correctly retu

我需要通过调用返回图像路径的函数来动态更改img src,但是当我使用下面的代码时,图像元素显示为

组件。ts:

getMedia(row) {
    this.sharedDataService.inventoryRows.forEach(function(elem){
      if(row.vin === elem.vin){
        console.log(elem.media[0].href);    //logs string correctly
        return elem.media[0].href;
      }
    });
  }
<img src="{{getMedia(row)}}" />
//DOM element comes back as <img src(unknown)/>
此代码成功地将存储在
elem.media[0].href
中的字符串记录到控制台,因此我确信它将以字符串形式返回正确的路径

HTML:

getMedia(row) {
    this.sharedDataService.inventoryRows.forEach(function(elem){
      if(row.vin === elem.vin){
        console.log(elem.media[0].href);    //logs string correctly
        return elem.media[0].href;
      }
    });
  }
<img src="{{getMedia(row)}}" />
//DOM element comes back as <img src(unknown)/>

//DOM元素返回为
正如其他Stackoverflow答案所建议的那样,我也尝试了以下方法,但我也没有使用此方法获得所需的DOM元素

<img [src]="getMedia(row)" />
//DOM element comes back as <img src="null"/>

//DOM元素返回为

我确信这应该是可能的,但我显然缺少一些关于其内部工作的幕后知识

如果您是从foreach循环返回的,而不是从getMedia函数返回值,请使用for循环它的更快和清晰

 getMedia(row) {
       const data = this.sharedDataService.inventoryRows;
       for(let i = 0; i < data.length; i++;) {
         if(row.vin === data[i].vin){
            return data[i].media[0].href;
         }
       }
       return '';
 } 
getMedia(行){
const data=this.sharedDataService.inventoryRows;
for(设i=0;i
您实际上并没有从函数中返回任何数据,因为
中的
return
关键字只会中断循环,而且也会。可以通过将
.forEach
替换为类似
.find
的内容来解决此问题,如下所示:

函数已断开(){
var列表=[1,2,3,4,5];
var值=list.forEach(函数(num){
如果(num==2)
返回num;
});
返回值;
}
函数工作(){
var列表=[1,2,3,4,5];
var值=list.find(函数(num){
如果(num==2)
返回num;
});
返回值;
}
log(“断开的”,断开的());

log(“working”,working())
这个.sharedDataService.inventoryRows
是异步操作吗?您也可以提供该代码吗?作为html参数传递的
是什么?