2016-10-01 5 views
0

In Angular 2 Ich habe diese component.html:Angular 2 * ngIf für 'this'

<li *ngFor="let something of somethings"> 
    <span>{{something}}</span> 
    <input class="doit" type="text" *ngIf="iscalled" /> 
<div id="container"> 
    <button class="btn btn-warning editsection (click)="editAction()">Edit</button> 
</div> 
</li> 

mit diesem component.ts:

editAction(){ this.iscalled = true; } 

ist standardmäßig , in meiner Komponente auf false gesetzt.

Grundsätzlich für jede something von somethings Ich produziere, zusammen mit meiner Liste ist ein Eingabefeld, das zugewiesen ist, und eine Schaltfläche, die editAction() ausgeführt wird. Die Schaltfläche ist nur vorhanden, wenn der Benutzer auf die Schaltfläche editAction() klickt.

Jetzt, wie es ist, klicken Sie auf die Schaltfläche editAction() aktiviert alle Eingabefelder in meiner Liste. Ich möchte dies auf genau das li Element beschränken, für das es bestimmt ist.

Ich weiß nicht, ob Angular 2 eine bestimmte Aktion dafür hat, oder ob dies eine einfache JavaScript-Lösung ist.

+1

Haben Sie überlegt, den Index zu verwenden, den ngFor darstellt? – jonrsharpe

Antwort

1

HINWEIS: mit dieser Einstellung nicht setzen Standardwert von zu falsch

<li *ngFor="let something of somethings"> 
    <span>{{something}}</span> 
    <input class="doit" type="text" 
      *ngIf="something.iscalled" />  //<<<===changed 

    <div id="container"> 
      <button class="btn btn-warning 
      editsection 
      (click)="editAction(something)">  //<<<===changed 
       Edit 
      </button> 
    </div> 
</li> 

editAction(something){ something.iscalled = true; } 

, wenn Sie Sie Toggle es wollen iscalled dann kann folgendes tun,

editAction(something){ something.iscalled != something.iscalled; } 
+0

danke dafür! Die Umschaltoption scheint jedoch nicht zu funktionieren. und ich verstehe, dass es einen Tippfehler bei dir gibt, also ist es nicht so, dass ich es kopiere. Die Logik endet damit, nichts zu tun. – abrahamlinkedin

+1

sollte es funktionieren. Ich bin mir ziemlich sicher. Wenn Sie ein beliebiges Modell für ein 'something'-Objekt verwenden, stellen Sie sicher, dass diesem Modell die icalled-Eigenschaft hinzugefügt wird. Es wird wie erwartet funktionieren. – micronyks

+1

Ich verstehe. Wenn es nicht funktioniert, können Sie 'something.ecaled! = something.ecalogled' in' something.ecolled =! something.icollared' ändern – micronyks

Verwandte Themen