Получение неопределенной ошибки при двустороннем связывании формы при использовании объекта, реализующего интерфейс - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть интерфейс Пользователь:

export interface User{
name:string;
email:string:
address:string;
}

Я импортировал это на свою ионную страницу и в класс, перед кодом конструктора у меня есть код:

user:User;

Затем,в методе ngOnInit у меня есть код, который устанавливает значение этой пользовательской переменной.

Это работает нормально.

Теперь я пытаюсь реализовать двустороннее связывание объекта пользователя и формыполя ввода.В полях ввода формы я использую такую ​​модель: [(ngModel)]="user.name"

Теперь я получаю сообщение об ошибке, что поле user.name не определено.Поэтому я перехожу на код своей страницы и пытаюсь установить user:User={};

Это выдает ошибку, поскольку интерфейс ожидает имя, адрес электронной почты и адрес - поэтому не может быть объявлен пустым.Если я удаляю интерфейс и объявляю код следующим образом: user:any={}, тогда он работает нормально.

Я думаю, что неопределенная ошибка связана с тем, что пользовательский объект не имеет значения (устанавливается в методе ngOnInit), когдаПользовательский интерфейс загружается?Как мне поступить в такой ситуации, когда я хочу реализовать концепцию интерфейса?Или это хорошо для реализации пустых полей?Или лучше использовать класс?Пожалуйста, мне нужна ясность в этом.

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Используйте безопасный оператор ? (который отвечает на ваш вопрос Or is it good to implement nullable fields?):

export interface User {
    name?: string;
    email?: string;
    address?: string;
}
0 голосов
/ 10 декабря 2018

Вы можете сделать свойства в интерфейсах необязательными, используя ? после имени.

export interface User {
    name?: string;
    email?: string;
    address?: string;
}

С этим кодом вам не нужно явно определять все свойства при создании объекта пользователя с помощью:

user: User = {};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...