Angular 2 ng for first, last, index loop


92

ฉันพยายามตั้งเป็นค่าเริ่มต้นของเหตุการณ์แรกในตัวอย่างนี้: plunkr

ได้รับข้อผิดพลาดต่อไปนี้:

    Unhandled Promise rejection: Template parse errors:
    TypeError: Cannot read property 'toUpperCase' of undefined ("dButtonToggleGroup">
    <md-button-toggle [ERROR ->]*ngFor="let indicador of indicadores; #first = first" value="indicador.id" [checked]="first">"): ng:///AppModule/HomeComponent.html@35:78
    Parser Error: Unexpected token #, expected identifier, keyword, or string at column 31 in [let indicador of indicadores; #first = first] in ng:///AppModule/HomeComponent.html@35:78 ("<md-button-toggle *ngFor="let indicador of indicadores; #first = first" value="indicador.id" [ERROR ->][checked]="first">
    <span>{{ indicado"): ng:///AppModule/HomeComponent.html@35:153

เกิดอะไรขึ้น??

คำตอบ:


185

ตรวจสอบนี้plunkr

เมื่อคุณเชื่อมโยงกับตัวแปรคุณต้องใช้วงเล็บ นอกจากนี้คุณใช้แฮชแท็กเมื่อคุณต้องการรับการอ้างอิงถึงองค์ประกอบใน html ของคุณไม่ใช่สำหรับการประกาศตัวแปรภายในเทมเพลตเช่นนั้น

<md-button-toggle *ngFor="let indicador of indicadores; let first = first;" [value]="indicador.id" [checked]="first"> 
...

แก้ไข: ขอบคุณChristopher Moore : Angular แสดงตัวแปรท้องถิ่นต่อไปนี้:

  • index
  • first
  • last
  • even
  • odd

ขอขอบคุณ! นั่นช่วยฉันได้มาก แต่ฉันพยายามใช้สิ่งแรกเพราะค้นหาเกี่ยวกับมันฉันพบตัวอย่างเช่นblog.angular-university.io/angular-2-ngfor (ระบุองค์ประกอบแรกและองค์ประกอบสุดท้ายของรายการ)
PriNcee

อาโอเค. คุณยังสามารถทำได้ แทนการlet i = indexเพียงแค่เปลี่ยนไปlet first = first;และเปลี่ยน [ตรวจสอบ] ผูกพันกับเพียงแค่ตรวจสอบ "ครั้งแรก" แทน "ฉัน == 0"
Steveadoo

ดี! ตอนนี้กำลังทำงาน! แต่ฉันไม่เข้าใจเลยว่าทำไมฉันต้องผูกแอตทริบิวต์ที่ตรวจสอบด้วยวงเล็บ
PriNcee

29
@Steveadoo ในngForexposes เชิงมุมตัวแปรท้องถิ่นต่อไปนี้index, first, last, และeven oddคุณช่วยอัปเดตคำตอบเพื่อชี้แจงประเด็นนี้สำหรับผู้ใช้ในอนาคตได้ไหม
Christopher Moore

2
แทนที่จะlet first = firstคุณสามารถเขียนfirst as isFirst(isFirst เป็นตัวแปรที่กำหนดเอง) ตามที่อธิบายไว้ที่นี่: angular.io/api/common/NgForOf#local-variables
jurl

58

นี่คือวิธีการทำใน Angular 6

<li *ngFor="let user of userObservable ; first as isFirst">
   <span *ngIf="isFirst">default</span>
</li>

สังเกตการเปลี่ยนแปลงจากlet first = firstเป็นfirst as isFirst


คุณจำเป็นต้องเปลี่ยนท่อ|ที่มี;ให้มันทำงาน
Florian Moser

let first = firstและfirst as isFirstการประกาศทั้งสองถูกต้องในการใช้นามแฝงที่สองนั้นอ่านได้ค่อนข้างมาก
Mohan Ram

3

ด้วยวิธีนี้คุณจะได้รับดัชนีใด ๆ ใน*ngForรูปแบบ ANGULAR ...

<ul>
  <li *ngFor="let object of myArray; let i = index; let first = first ;let last = last;">
    <div *ngIf="first">
       // write your code...
    </div>

    <div *ngIf="last">
       // write your code...
    </div>
  </li>
</ul>

เราสามารถใช้นามแฝงเหล่านี้ใน *ngFor

  • index: number: let i = indexเพื่อให้ได้ดัชนีของวัตถุ
  • first: boolean: let first = firstที่จะได้รับดัชนีแรกของวัตถุ
  • last: boolean: let last = lastที่จะได้รับดัชนีสุดท้ายของวัตถุ
  • odd: boolean: let odd = oddที่จะได้รับดัชนีแปลกของวัตถุ
  • even: boolean: let even = evenเพื่อให้ได้แม้ดัชนีของวัตถุ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.