ОШИБКА TypeError: неопределенный объект не является объектом

#angular #nativescript #angular2-nativescript

#angular #nativescript #angular2-nativescript

Вопрос:

В моем NativeScript с проектом Angular я просто пытаюсь просто использовать объект для сбора информации о пользователе. Всякий раз, когда я делаю это, я получаю сообщение об ошибке ERROR TypeError: undefined is not an object (evaluating '_co.user.username') . Я попытался воссоздать это в NativeScript Playground, но он не распознал мою модель.

Итак, вот моя модель:

 export interface User {
    id: number,
    username: string,
    password: string,
    firstName: string,
    lastName: string,
    permissions: string,
    year: number,
    basketball: boolean,
    dodgeball: boolean,
    football: boolean,
    soccer: boolean,
    softball: boolean,
    volleyball: boolean,
    teamID: number
}
  

Вот мой компонент .ts:

 export class SignUpComponent implements OnInit {

    public user: User;

    constructor(private router: Router) { }

    ngOnInit(): void { }

    nextSignUp(): void {
        alert(this.user.username);
        this.router.navigate(['/signUpInfo']);
    }
}
  

и затем вот мой HTML-файл, в котором я использую свою ngModel:

 <ActionBar title="Sign Up" class="action-bar"></ActionBar>
<GridLayout class="pageBackground">
	<ScrollView>
		<StackLayout class="main-container">
			<TextField style="margin-top: 3%;" class="form-control" hint=" Email Address" keyboardType="email" returnKeyType="done" autocorrect="false"
			 autocapitalizationType="none" [(ngModel)]="user.username"></TextField>
			<Button class="btn btn-primary btn-rounded-sm" style="width: 90%; height: 7%; padding: 0px; margin-top: 77%; background-color: black; color: white; vertical-align: bottom;"
			 text="Next" (tap)=nextSignUp()></Button>
		</StackLayout>
	</ScrollView>
</GridLayout>  

Я не могу понять, почему я получаю эту ошибку или как ее исправить. Любая помощь была бы высоко оценена.

Комментарии:

1. Интерфейс предоставляет тип только пользовательской переменной. В этом случае может сработать инициализация user var с пустым obj или с пустым полем username.

2. @Ajay это тоже была моя первая мысль, но затем она просто изменила ошибку на evaluating this.user.username = ""

3. ngOnInit() { this.user = { ‘username’: ‘ ‘ ‘ }; } Это должно сработать.

4. @Ajay это то, что я пробовал, но я, наконец, нашел это. по какой-то причине файл .js, который создается всякий раз, когда вы создаете файл .ts для nativescript в VS, не обновлялся, поэтому мне просто пришлось удалить его и обновить. Спасибо!

5. @rcarcia02 Я получаю ту же ошибку. Как удалить файл .js и обновить его? Я не знаю, где ее найти в VS code.