typescript - Angular 4: Aynı seçiciye sahip birden fazla bileşen varsa, bazı koşullara bağlı olarak yalnızca bir bileşeni nasıl yükleyebilirim?


Ana bileşen:

@Component({
    selector: 'app-root',
    template: '<app-report></app-report>'
})

Bileşen 1:

@Component({
    selector: 'app-report',
    templateUrl: './trip.report.html'
})

Bileşen2 :

@Component({
    selector: 'app-report',
    templateUrl: './user.report.html'
})

Angular 4'te, bazı koşullara göre hangi bileşenin (bileşen 1 veya 2) "ana bileşen" içinde yükleneceğine karar verilebilecek herhangi bir yol var mı?

Cevap #1

Bunu yapmanın bir yolu yok. Bir NgModule içinde bildirilen ve içe aktarılan tüm bileşenler ve yönergeler için seçicilerin benzersiz olması gerekir.

Koda sahipseniz, çelişen seçiciler oluşturmayın.

Eğer ithal edilen üçüncü taraf modüllerin bileşenlerinin çakışan seçicileri varsa,
çakışan bir bileşeni çakışmayan bir seçiciye sahip başka bir bileşenle sarabilir ve kendi modülüne ekleyebilirsiniz. Daha sonra @NgModule({imports: [...]}) içinde hangi bileşenin kullanılacağını belirtebilirsiniz.

O zaman sadece *ngIf kullanabilirsiniz

<conflicting-component *ngIf="foo"></conflicting-component>
<de-conflicted-wrapper *ngIf="!foo"></de-conflicted-wrapper>

İlgili makaleler