Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

260
Vistas
Cómo obtener el valor de almacenamiento local en la plantilla Angular 2

Aquí está mi código,

HTML:

 <div *ngFor="let comment of comments | orderBy: '-'+orderBy"> <div class="comment-item"> <div class="row"> <div class="col-md-8"> {{comment.userName}} </div> <div class="col-md-4"> <div class="comment-timeago"> {{comment.time | timeAgo}} </div> <div class="likedicon"> <i class="fa fa-heart-o disliked" aria-hidden="true" (click)="likeComment(comment._id, comment)"></i> <i class="fa fa-heart liked" aria-hidden="true" *ngIf="comment.liked == 'liked'" (click)="dislikeComment(comment._id, comment)"></i> </div> <div class="like-num"> {{comment.like}} </div> </div> </div> </div> </div>

Archivo componente.ts:

 likeComment(commentId, comment) { localStorage[commentId] = "liked"; comment.liked = localStorage[commentId]; comment.like ++; this.dataService.likeComment(commentId).subscribe( // Post data to server error => console.log(error) ) } dislikeComment(commentId, comment) { localStorage[commentId] = "disliked"; comment.liked = localStorage[commentId]; comment.like --; this.dataService.dislikeComment(commentId).subscribe( // Post data to server error => console.log(error) )

Cada comentario puede cambiar de Me gusta o No me gusta de forma independiente, pero tengo que usar localStorage para decidir qué estado se debe mostrar. Tal vez como:

 *ngIf="localStorage.getItem(comment._Id) == 'liked'"

Desafortunadamente, es la sintaxis incorrecta. Encuentro el captador trabajando en mi otro caso, y la referencia es de Angular2 ¿Cómo mostrar el valor de almacenamiento local dentro de la plantilla HTML5? .

En este caso, no tengo idea de hacer eso, porque no puedo usar get commentLike() en mi función, ni usar una variable global. ¿Cómo lo soluciono?

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Cuando intenta usar *ngIf="localStorage.getItem(comment._Id) == 'liked'" , está tratando de encontrar this.localStorage en component.ts, pero no existe, por lo que arroja un error. Cosas como localStorage son comunes para usar donde sea necesario, así que guárdelo en global.ts, al que se puede acceder fácilmente...

En su global.ts , agregue una función como esta:

 export class GlobalApp { constructor() {} public localStorageItem(id: string): string { return localStorage.getItem(id); }

Ahora actualice su component.ts :

 import {GlobalApp} from '../helpers'; export class MyComponent { constructor (public app: GlobalApp) { } }

Ahora está listo para usar fácilmente en cualquier plantilla, ya que tenemos una función declarada global:

 *ngIf="app.localStorageItem(comment._Id) == 'liked'"
about 4 years ago · Santiago Trujillo Denunciar

0

No es la forma correcta de usar localStorage como localStorage[commentId] . Debería comprobarlo aquí: Window.localStorage .

Debe usar setItem y getItem.

Para su caso, le sugiero que use el módulo marcj/angular2-localstorage .

En componente:

 @LocalStorage() public comments:any = [];

En tu plantilla:

 *ngIf="comments[index]._id == 'liked'"
about 4 years ago · Santiago Trujillo Denunciar

0

@Component({ selector:'app-any', templates:`<div *ngIf="localStorageAlice.getItem('key')">...</div>` }) export class MyComponent { localStorageAlice = localStorage; // to access localStorage in html use localStorageAlice.getItem('key'); }
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda