O que é equivalente a ngSrc no Angular mais recente?

92

Gostaria de implementar img, com um src vindo do objeto JSON.

No AngularJS, eu poderia fazer:

<img ng-src="{{hash}}" alt="Description" />

Existe algum equivalente a isso no Angular 2+?

uksz
fonte

Respostas:

179

AngularJS:

<img ng-src="{{movie.imageurl}}">

Angular 2+:

<img [src]="movie.imageurl">

Angular docs


Observe que a interpolação pode alcançar o mesmo resultado:

<img src="{{vehicle.imageUrl}}">

<img [src]="vehicle.imageUrl">

Não há diferença técnica entre essas duas instruções para associação de propriedade, contanto que você não deseje associação bidirecional.

A interpolação é uma alternativa conveniente para vinculação de propriedade em muitos casos. Na verdade, o Angular converte essas interpolações nas associações de propriedade correspondentes antes de renderizar a vista. fonte

Randy
fonte
9
então, não é equivalente a ng-src, porque ng-src evita carregar a imagem antes que ng-src tenha um valor
Sebastián Rojas
Como Sebastian disse! Não é igual porque elementos como video/audioe poucos outros não deveriam ter attributessem valor. ng-srcnão é equivalente a isso[src]
Nikhilesh Shivarathri
8

É um processo de duas etapas para obter a mesma funcionalidade do ng-src em seu aplicativo Angular.

Primeiro passo:

Em seu HTML, use a nova sintaxe:

<img [src]="imageSrc">

Segundo passo:

Em seu componente / diretiva, inicialize o valor como vazio . Por exemplo:

@Component({
  selector: 'ag-video',
  templateUrl: './video.component.html'
})
export class SampleComponent {
   imageSrc = '';
}

Agora, isso eliminaria a nullchamada de rede (chamada vazia) devido ao valor não ser definido para o elemento.

Nikhilesh Shivarathri
fonte
3

Também pode ser escrito na forma de interpolação como:

<img src="{{movie.imageurl}}">
Raksha Bhartiya
fonte
3
Por que não?? 54321
Bartho Bernsmann
1
<tr *ngFor="let post of posts | paginate: { id: 'server', itemsPerPage: 
       10, currentPage: p , totalItems: count  }">

   <td>
    <img src="https://img.youtube.com/vi/{{post.youtubeVideoId}}/default.jpg">
   </td>

   <td>
     {{post.videoName}}
   </td>

</tr>
Shashwat Gupta
fonte
Votos negados porque esta não é a solução recomendada porque cria uma solicitação com falha para: img.youtube.com/vi {{post.youtubeVideoId}} / default.jpg.
Jamie
Cria uma solicitação com falha! Acordado.
Nikhilesh Shivarathri