ng-content select не работает "<элемент> не является известным элементом"
Я следую этому уроку так:
<div class="app-autocomplete">
<mat-form-field>
<mat-form-field>
<div class="app-autocomplete-input">
<ng-content select="app-autocomplete-input"></ng-content>
</div>
</mat-form-field>
<button mat-icon-button type="button" [disabled]="disabled">
<mat-icon>clear</mat-icon>
</button>
</mat-form-field>
<!-- ... -->
</div>
Но я получаю
Uncaught Error: Ошибки синтаксического анализа шаблона: 'app-autocomplete-input' не является известным элементом:
- Если 'app-autocomplete-input' является угловым компонентом, то убедитесь, что он является частью этого модуля.
- Если 'app-autocomplete-input' является веб-компонентом, то добавьте 'CUSTOM_ELEMENTS_SCHEMA' к '@NgModule.schemas' этого компонента, чтобы подавить это сообщение. (" [ОШИБКА ->] ...
и я не совсем понимаю, в чем здесь проблема.
Вот как я пытаюсь использовать app-autocomplete
:
<app-autocomplete>
<app-autocomplete-input>
<input placeholder="Yo"/>
</app-autocomplete-input>
</app-autocomplete>
1 ответ
Решение
Задача
Фактическая цель вашего заключается в том, чтобы использовать Content Projection
для дальнейшей настройки компонента при использовании.
вопрос
Основная проблема заключается в использовании пользовательских компонентов app-autocomplete-input
который нигде не предоставляется.
исправлять
Поскольку у вас нет пользовательского компонента, и вы никогда не намеревались иметь пользовательский компонент. Вы используете простой HTML-тег, как div
span
или вы можете использовать класс CSS autocomplete-input
,
Модифицированный код
<div class="app-autocomplete">
<mat-form-field>
<mat-form-field>
<div class="app-autocomplete-input">
<ng-content select=".app-autocomplete-input"></ng-content>
</div>
</mat-form-field>
<button mat-icon-button type="button" [disabled]="disabled">
<mat-icon>clear</mat-icon>
</button>
</mat-form-field>
<!-- ... -->
</div>
приложение-autocomplete.html
<app-autocomplete>
<div class="app-autocomplete-input">
<input placeholder="Yo"/>
</div>
</app-autocomplete>