Я пытаюсь создать компонент Angular Elements для встраивания в размещенную веб-страницу, и я хочу, чтобы мой компонент содержал реактивную форму Angular.
Сборка завершается неудачно с ошибкой: «Невозможно выполнить привязку к« formGroup », поскольку она не известна свойству« form »».
Кто-нибудь может определить, что я делаю неправильно?
Редактировать: Это Angular 9 и TypeScript 3.7, работающие на последней версии Angular CLI. Stackblitz: https://stackblitz.com/edit/angular-57wq1s
Редактировать 2: обновленный код Stackblitz больше не вызывает ошибку времени компиляции, но элемент управления не завершает sh рендеринг. Кнопка «Отправить» не отображается. Если я удаляю директиву formControlName из ввода пароля, компонент выполняет полностью.
Edit 3: StackBlitz, кажется, работает сейчас, но если я загружаю на свой компьютер, npm установка и ng serve, я получаю проблему, когда он отображает текстовое поле, но не кнопку.
Индекс. html
<!doctype html>
<html lang="en">
<body>
<app-password-reset></app-password-reset>
</body>
</html>
app.module.ts
@NgModule({
declarations: [],
imports: [
BrowserModule,
FormsModule,
ReactiveFormsModule
],
entryComponents: [PasswordResetComponent],
providers: [],
})
export class AppModule {
constructor(injector: Injector) {
const passwordResetElement = createCustomElement(PasswordResetComponent, {injector});
customElements.define('app-password-reset', passwordResetElement);
}
ngDoBootstrap(): void { }
}
password-reset.component.ts
@Component({
template: `
<form [formGroup]="resetForm" (ngSubmit)="formSubmit($event)">
<input type="password" formControlName="password">
<button type="submit">Reset Password</button>
</form>`
})
export class PasswordResetComponent {
constructor(private fb: FormBuilder) { }
resetForm = this.fb.group({
password: [null, Validators.required],
});
formSubmit(event: Event) {
alert('it works');
}
}