ОШИБКА TypeError: невозможно установить для свойства googleUri значение null? Используете интерфейс для двухсторонней привязки?

Я пытаюсь выполнить двухстороннюю привязку к своему интерфейсу, но продолжаю получать «свойство set null»?

Когда я нажимаю кнопку «Отправить», которая запускает функцию onSave, я получаю сообщение об ошибке «Не удается установить для свойства 'googleUri' значение null?». Вывод журнала консоли как null. Как мне исправить это при использовании моего интерфейса?

Это мой интерфейс

export interface User {
    googleUri?: string;
}

это мой компонент HTML

<form name = "form" (ngSubmit) = "onSave()" #f = "ngForm" novalidate>
            <div class = "row">
              <div class = "col-md-12">
                <div class = "form-group">
                  <label for = "googleUri">Google Excel Address</label>
                  <input type = "text" class = "form-control form-control-lg" name = "googleUri" id = "googleUri" [ngModel] = "user?.googleUri" (ngModelChange) = "user.googleUri=$event"/>
                </div>
              </div>
            </div>
</form>

мой компонент TS

export class ProfileComponent implements OnInit {
  private user: User = {};
  public loading: boolean = false;

  constructor(private userService: UserService) { }

  ngOnInit() {
  }

  private onSave(): void {
    console.info(this.user);
    this.userService.saveUserSettings(this.user)
      .subscribe(
        data => console.info(data),
        err => console.info(err),
        () => this.loading = false
      );
  }
}
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
260
2

Ответы 2

Для двусторонней привязки данных вы можете напрямую использовать [(ngModel)]
Вы можете заменить свой код приведенным ниже кодом:

<input type = "text" name = "googleUri" id = "googleUri" [(ngModel)] = "user.googleUri"/>

Я создал тот же пример, что и вы упомянули выше, и я могу
для доступа к переменной googleUri в компоненте.

Пожалуйста, подтвердите, указав ниже:

whether you have imported the User interface in the component correctly or not ??

См. Демонстрационный пример здесь. Демо

Надеюсь, что это поможет вам. Вы можете проверить изображение результата ниже:

Измените частное на «общедоступное» для пользовательского объекта.

public user: User = {};

В шаблоне вы можете распечатать объект модели с помощью pre.

<pre>
{{user | json}}
</pre>

Да, но я хочу использовать интерфейс. Я буду использовать <pre> {{user | асинхронный}}. </pre>

Anh 27.10.2018 18:50

Другие вопросы по теме