Я просмотрел десятки сообщений здесь и в других местах с одним и тем же сообщением об ошибке, а также весь Часто задаваемые вопросы по модулям, но до сих пор не нашел решения, которое работает в моем случае. (Например, вопросы 35543028, 35939950, 40426432, 40828068, 44898901, 45436552, 47660922, 50200329, 59212318...) Они указали следующие вещи для проверки:
- Правильная заглавная буква ngIf: проверьте
- Основной модуль импортирует BrowserModule: проверьте
- Модуль, создающий компонент, импортирует CommonModule: N/A; компонент исходит из основного модуля, в котором есть BrowserModule, который импортирует и экспортирует CommonModule
- В любом случае добавьте CommonModule к основному модулю (необходимо в какой-то момент в прошлом): проверьте
- Условное выражение имеет допустимый синтаксис: проверить
Так что я не знаю, что еще может делать это. Мое лучшее предположение на данный момент заключается в том, что службе, возможно, нужно каким-то образом предоставить CommonModule. Я попытался создать для этого функциональный модуль, но удалил его, когда это не помогло.
Проблема.диалог.html:
...
<div *ngIf="data.technicalDetails">
<h2>Technical details</h2>
<p>{{data.technicalDetails}}</p>
</div>
...
Проблема.service.ts:
export interface Result
{
...
technicalDetails: string;
};
@Component({
selector: 'problem-dialog',
templateUrl: 'problem.dialog.html'
})
export class ProblemDialog
{
constructor(
public dialogRef: MatDialogRef<ProblemDialog>,
@Inject(MAT_DIALOG_DATA) public data: Result) { }
}
@Injectable()
export class ProblemService implements NextObserver<Result>, ErrorObserver<Result>, OnDestroy
{
...
public next(result: Result): void
{
...
this.dialog.open(ProblemDialog, { data: result });
}
}
новый-db.component.ts:
...
@Component({
selector: 'app-new-db',
templateUrl: './new-db.component.html',
styleUrls: ['./new-db.component.scss']
})
export class NewDbComponent
{
constructor(
private fb: FormBuilder,
private http: HttpClient,
private problemService: ProblemService,
@Inject('BASE_URL') private baseUrl: string)
{ }
...
onSubmit()
{
...
this.http.post<Result>(this.baseUrl + 'api/databases/create', proto)
.subscribe(this.problemService);
}
}
app.module.ts:
...
import { CommonModule } from "@angular/common";
import { BrowserModule } from '@angular/platform-browser';
import { ProblemService } from './problem/problem.service';
@NgModule({
declarations: [
...
NewDbComponent
],
imports: [
...
BrowserModule.withServerTransition({ appId: 'ng-cli-universal' }),
CommonModule,
],
providers: [
ProblemService
],
bootstrap: [AppComponent]
})
export class AppModule
...
Angular CLI 9.1.4, Node 12.14.0, ОС win32 x64, Angular 9.1.4. В противном случае проект строится и работает нормально.