¿Qué es equivalente a ngSrc en el Angular más nuevo?

92

Me gustaría implementar img, con un src proveniente del objeto JSON.

En AngularJS, podría hacer:

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

¿Hay algún equivalente a esto en Angular 2+?

uksz
fuente

Respuestas:

179

AngularJS:

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

Angular 2+:

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

Documentos angulares


Tenga en cuenta que la interpolación puede lograr el mismo resultado:

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

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

No hay diferencia técnica entre estas dos declaraciones para la vinculación de propiedad, siempre y cuando no desee una vinculación bidireccional.

La interpolación es una alternativa conveniente para la vinculación de propiedades en muchos casos. De hecho, Angular traduce esas interpolaciones en los enlaces de propiedad correspondientes antes de renderizar la vista. fuente

Cachondo
fuente
9
entonces, no es equivalente a ng-src, porque ng-src evita cargar la imagen antes de que ng-src tenga un valor
Sebastián Rojas
¡Como dijo Sebastian! No es igual porque elementos como video/audioy pocos otros no deberían tener attributesningún valor. ng-srcno es equivalente a eso[src]
Nikhilesh Shivarathri
8

Es un proceso de dos pasos para lograr la misma funcionalidad de ng-src en su aplicación Angular.

Primer paso:

En su HTML, use la nueva sintaxis:

<img [src]="imageSrc">

Segundo paso:

En su componente / directiva, inicialice el valor para que esté vacío . Por ejemplo:

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

Ahora, esto eliminaría la nullllamada de red (llamada vacía) debido a que el valor no se establece en el elemento.

Nikhilesh Shivarathri
fuente
3

También se puede escribir en forma de interpolación como:

<img src="{{movie.imageurl}}">
Raksha Bhartiya
fuente
3
¿¿Por qué no?? 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
fuente
Se votó en contra porque esta no es la solución recomendada porque crea una solicitud fallida a: img.youtube.com/vi {{post.youtubeVideoId}} / default.jpg.
Jamie
Crea una solicitud fallida. Convenido.
Nikhilesh Shivarathri