Bu tanılama, bir şablonda özel yapısal direktifler (ör. *select veya *featureFlag) kullanan bağımsız bir bileşenin, bu direktifler için gerekli içe aktarmalara sahip olmasını sağlar.
import {Component} from '@angular/core';
@Component({
// Template uses `*select`, but no corresponding directive imported.
imports: [],
template: `<p *select="let data; from: source">{{ data }}</p>`,
})
class MyComponent {}
Bunda ne yanlış?
Bir yapısal direktifi içe aktarmadan kullanmak çalışma zamanında başarısız olur, çünkü Angular HTML elemanının var olmayan bir select özelliğine bağlanmaya çalışır.
Bunun yerine ne yapmalıyım?
İlgili yapısal direktifin bileşene içe aktarıldığından emin olun:
import {Component} from '@angular/core';
import {SelectDirective} from 'my-directives';
@Component({
// Add `SelectDirective` to the `imports` array to make it available in the template.
imports: [SelectDirective],
template: `<p *select="let data; from: source">{{ data }}</p>`,
})
class MyComponent {}
Yapılandırma gereksinimleri
Herhangi bir genişletilmiş tanılamanın verilmesi için strictTemplates etkinleştirilmelidir.
missingStructuralDirective, strictTemplates dışında ek bir gereksinime sahip değildir.
Bunu önleyemezsem ne olur?
Bu tanılama, projenin tsconfig.json dosyası düzenlenerek devre dışı bırakılabilir:
{
"angularCompilerOptions": {
"extendedDiagnostics": {
"checks": {
"missingStructuralDirective": "suppress"
}
}
}
}
Daha fazla bilgi için genişletilmiş tanılama yapılandırması bölümüne bakın.