#angular #angular-cdk #angular-ivy
#угловой #angular-cdk #angular-ivy
Вопрос:
Я пытаюсь реализовать функцию преобразования речи в текст в своем приложении, используя директиву [appSpeechToText], которую я могу применить к любому полю ввода / текстовой области, компонент в основном отображает кнопки записи, паузы и остановки, для которых я хочу использовать <mat-icon>
элемент.
Моя директива работает так, что если я создаю HTML
<p>BANG!</p>
Все компилируется, как и следовало ожидать, и ярлык BANG! отображается рядом с моим элементом управления textarea, как я и ожидал, однако, когда я меняю HTML на
<mat-icon>not_started</mat-icon>
Во время компиляции я получаю следующее сообщение: —
src/app/shared/components/speech-to-text/speech-to-text.component.html:2:5 - error NG8001: 'mat-icon' is not a known element:
1. If 'mat-icon' is an Angular component, then verify that it is part of this module.
2. If 'mat-icon' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
2 <mat-icon>not_started</mat-icon>
~~~~~~~~~~
src/app/shared/components/speech-to-text/speech-to-text.component.ts:5:18
5 templateUrl: './speech-to-text.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component SpeechToTextComponent.
Я в недоумении относительно того, как я сообщаю Angular, что я хочу использовать MatIconModule?
Чтобы уточнить
Компонент запускается с помощью директивы, используя
this.overlayRef.attach(new ComponentPortal(SpeechToTextComponent))
Я не ссылаюсь на компонент ни в одном модуле, потому что он динамически присоединяется к наложению. Однако у меня MatIconModule
есть импортированный в мой app.module.ts
файл, но безрезультатно.
Ответ №1:
Либо добавьте MatIconModule
imports
в свой app.module.ts
or (если он существует) speech-to-text.module.ts
.
Комментарии:
1. спасибо, я включил MatIconModule в свой файл app.module.ts, я добавил некоторые пояснения к своему первоначальному вопросу.
2. Мое первое предположение заключается в том, что компонент не подключен к app.module, поэтому требуется собственный модуль, подобный
speech-to-text.module.ts
и импортирующий модуль Mat там
Ответ №2:
import { MatIconModule } from '@angular/material/icon'
Комментарии:
1. спасибо, я включил MatIconModule в свой файл app.module.ts, я добавил некоторые пояснения к своему первоначальному вопросу.
2. импортируйте MatIconModule в файл преобразования речи в текст.component.ts
Ответ №3:
Скорее всего, вам не хватает импорта модуля в вашем файле app module .ts.
Если вы только начинаете работать с компонентами Angular Material, обязательно обратитесь к руководству по началу работы: https://material.angular.io/guide/getting-started И ссылка на компонент значка: https://material.angular.io/components/icon/api
Комментарии:
1. спасибо, я включил MatIconModule в свой файл app.module.ts, я добавил некоторые пояснения к своему первоначальному вопросу.
2. тогда, вероятно, ваш компонент принадлежит другому модулю, и этот модуль должен импортировать MatIconModule.
3. Как предложил Марек W, преобразование речи в текст.module.ts или что-то в этом роде
4. Может быть, попробуйте это angular.io/guide/sharing-ngmodules @AndrewHB
Ответ №4:
После сортировки мне нужно было добавить SpeechToTextComponent
в declarations
массив в моем app.module.ts
файле, сказав, что из-за необходимости ссылаться как на директиву, так и на компонент, вероятно, имеет смысл поместить его в собственный модуль, как упоминалось выше.
import { NgModule } from '@angular/core';
import { MatIconModule } from '@angular/material/icon';
import { SpeechToTextComponent } from '../components/speech-to-text/speech-to-text.component';
import { SpeechToTextDirective } from '../directives/speech-to-text.directive';
@NgModule({
imports: [MatIconModule],
declarations: [SpeechToTextComponent, SpeechToTextDirective],
exports: [SpeechToTextDirective]
})
export class SpeechToTextModule {}