Я кодирую приложение Nativescript-Angular2-Typescript, но в настоящее время всегда сталкиваюсь с ошибкой TypeError.
Следующий код уже настроен для целей отладки.
логин.component.html
<StackLayout>
<Image src = "res://icon" stretch = "none" horizontalAlignment = "center"></Image>
<TextField [(ngModel)] = "user.phonenr" hint = "mobile phone number" keyboardType = "phone" autocorrect = "false"></TextField>
<TextField hint = "SMS code" secure = "true"></TextField>
<Button text = "login" class = "submit-button" (tap) = "submitnr()"></Button>
<Button text = "register" class = "btn"></Button>
</StackLayout>
логин.component.ts
import { Component } from "@angular/core";
import { Button } from "tns-core-modules/ui/button";
import { User } from '../../shared/user/user';
import { UserService } from "../../shared/user/user.service";
@Component({
selector: "Login",
providers: [UserService],
moduleId: module.id,
templateUrl: "./login.component.html",
styleUrls: ['./login-common.css']
})
export class LoginComponent {
//Variables
public user: User;
constructor(private userService: UserService) {
this.user = new User();
this.user.phonenr = 2222555;
}
public submitnr() {
if (this.user.phonenr === undefined)
{
console.info("fucking undefined why ??????");
console.info(this.user.phonenr);
}
else
{
console.info("Its defined so why getting error!!!!!!????!??!!?");
console.info(this.user.phonenr);
}
}
}
пользователь.тс:
export class User {
phonenr: number | undefined;
}
user.service.ts:
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { User } from './user';
@Injectable()
export class UserService {
constructor(private http: HttpClient) { }
public register(user: User) {
console.info(user.phonenr);
}
}
Часть «user.phonenr» в «login.component.html» всегда выдает ошибку: TypeError: Невозможно прочитать свойство 'phonenr' неопределенного
Просто упомянем, что инструкция If для submitnr() запускается в определенную часть.
Надеюсь, я предоставил весь необходимый код. Если нет, дайте мне знать.
Ваш код выглядит правильно, я могу только предложить вам добавить *ngIf = "user" на вход, даже если это не решает проблему напрямую, это может помочь
А... если заменить класс на интерфейс?
При замене интерфейса классом он работает. Поскольку я новичок в программировании, я не уверен, что это лучшее решение для моей проблемы.
Красиво, идеально :)
Я рекомендовал использовать интерфейсы для передачи данных и использовать классы для выполнения логики/кода.
Я выбрал другое решение от @Nguyen Phong Thien. Тем не менее, спасибо за вашу помощь и время.
Вау, это сработало. Не знаю, почему, и был бы признателен за объяснение. Но это работает. Большое Вам спасибо.