
ანგულარის სპეციფიკიდან გამოდინარე ხშირად გვაქვს შემთხვევები, როდესაც გვესაჭიროება სტრუქტურული დირექტივის გამოყენება, მაგრამ არ გვჭირდება დამატებითი ელემენტის დარენდერება.
სწორედ ამ პრობლემის მოგვარების საშუალებას გვთავაზობს ng-container ელემენტი.
პრობლემის გასააზრებლად შევქმნათ ობიექტების მასივი და ვეცადოთ მის დარენდერებას *ngFor სტრუქტურული დირექტივის დახმარებით.
app.component.ts
import { Component, OnInit } from '@angular/core';
interface Data {
id: string;
name: string;
}
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {
public data: Data[] = [
{ id: '1', name: 'Val do' },
{ id: '2', name: 'Jon doe' },
{ id: '3', name: 'Lorem name' },
];
constructor() {}
ngOnInit(): void {}
}
app.component.html
<div *ngFor="let el of data">
{{ el.name }}
</div>
მოცემული მეთოდით დარენდერებისას დოკუმენტში ასევე დარენდერდება ყოველ ჯერზე div ელემენტი, რომელიც ჩვენთვის არა სასურველი ელემენტია, სწორედ ასეთი შემთხვევას აგვარიდებს ng-container-ის გამოყენება.
თუ div თეგს ჩავანაცვლებთ ng-container-ით ბრაუზერში დარენდერდება მხოლოდ {{ el.name }} მნიშვნელობები და არა დამატებითი არასასურველი html სელექტორი
მაგალითი
<ng-container *ngFor="let el of data">
{{ el.name }}
</ng-container>
ასევე ანგულარის სპეციფიკიდან გამომდინარე ერთ ელემენტზე არ შეგვიძლია გამოვიყენოთ რამდენიმე სტრუქტურული დირექტივა.
მოდი გავაკეთოთ მაგალითი. წარმოვიდგინოთ, რომ *ngFor სტრუქტურული დირექტივით უნდა დავბეჭდოთ მხოლოდ ის ელემენტი რომელსაც id აქვს 2-ის მნიშვნელობის ტოლი. ჩვენ თუ ვეცდებით მსგავს ჩანაწერს
<ng-container *ngFor="let el of data" *ngIf="el.id == '2'">
{{ el.name }}
</ng-container>
მივიღებთ შეცდომას, რადგან არ შეგვიძლია რამდენიმე სტრუქტურული დირექტივის ერთ სელექტორში გამოყენება, შესაბამისად გვრჩება შემდეგი გზა.
<ng-container *ngFor="let el of data">
<div *ngIf="el.id == '2'">{{ el.name }}</div>
</ng-container>
რომელიც წარმატებით ამოხსნის ჩვენს პრობლემას, მაგრამ აქ ბრაუზერში ისევ გვექნება არასასურველი div სელექტორი, სწორედ ამის მოსაგვარებლად აქაც შეგვიძლია div ელემენტის ng-container-ით ჩანაცვლება, რომელიც თავიდან აგვარიდებს ზედმეტი ელემენტის დაგენერირებას
<ng-container *ngFor="let el of data">
<ng-container *ngIf="el.id == '2'">{{ el.name }}</ng-container>
</ng-container>შეისწავლეთ ვებდეველოპმენტის ენები სრულიად უფასოდ, ისეთები როგორებიცაა Javascript, HTML, CSS და კიდევ სხვა მრავალი ენა










ქვემოთ მოცემულია უახლესი 3 ბლოგი პროგრამირების თემატიკასთან დაკავშირებით