Angular 调用函数时角度img src未知
我需要通过调用返回图像路径的函数来动态更改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
组件。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参数传递的行
是什么?