This diagnostic ensures that a standalone component using custom structural directives (e.g., *select or *featureFlag) in a template has the necessary imports for those directives.
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 {}What's wrong with that?
Using a structural directive without importing it will fail at runtime, as Angular attempts to bind to a select property of the HTML element, which does not exist.
What should I do instead?
Make sure that the corresponding structural directive is imported into the component:
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 {}Configuration requirements
strictTemplates must be enabled for any extended diagnostic to emit.
missingStructuralDirective has no additional requirements beyond strictTemplates.
What if I can't avoid this?
This diagnostic can be disabled by editing the project's tsconfig.json file:
{  "angularCompilerOptions": {    "extendedDiagnostics": {      "checks": {        "missingStructuralDirective": "suppress"      }    }  }}See extended diagnostic configuration for more info.