Ответ Sajeetharan правильный, и он работает.Я попытаюсь пролить немного света, чтобы прояснить ваши сомнения.
Вы устанавливаете this.form.data в null и типизируете его, используя интерфейс, но все же this.form.data имеет значение null, а не объект.
Я полагаю, что вы можете скомпилировать TS с --strictNullChecks, чтобы избежать этой путаницы, чтобы избежать присвоения нулю или неопределенности чему-либо.
В любом случае, в вашем случае, я думаю, вы либо инициализируете свою форму, используяте же типы, что и вы ожидаете:
form = {
data: {} as IMediaStorageAdd,
requester: '' as string
}
или вам нужно инициализировать данные формы перед использованием:
1) Если есть класс, реализующий ваш интерфейс IMediaStorageAdd
ngOnInit() {
this.form.requester = localStorage.getItem(`name`);
// where class MediaStorageAdd implements IMediaStorageAdd
this.form.data = new MediaStorageAdd();
// this could be done in the class MediaStorageAdd constructor actually
this.form.data.requested_date = new Date();
}
2) Если ни один класс не реализует ваш интерфейс IMediaStorageAdd, то вы должны сначала определить его как тип, а затем инициализировать данные формы, используя литерал объекта
export type TMediaStorageAdd {
requested_date: any;
place?: string;
temp_requested_date?: any;
details?: any[];
}
form = {
data: null as TMediaStorageAdd,
requester: null as string
}
ngOnInit() {
this.form.requester = localStorage.getItem(`name`);
this.form.data = {
requested_date = new Date();
}
}