Javascript 角2接口
我正在尝试使用Angular 2中的接口。 我已经创建了一个接口和一个组件 接口:Javascript 角2接口,javascript,html,angular,typescript,Javascript,Html,Angular,Typescript,我正在尝试使用Angular 2中的接口。 我已经创建了一个接口和一个组件 接口: export interface Items { id: number; title: string; message: string; done: boolean; } 组成部分: export class AddComponent implements OnInit { currentItem: string; todos: any; constru
export interface Items {
id: number;
title: string;
message: string;
done: boolean;
}
组成部分:
export class AddComponent implements OnInit {
currentItem: string;
todos: any;
constructor(private router: Router) {
this.currentItem = (localStorage.getItem('currentItem')!==null) ? JSON.parse(localStorage.getItem('currentItem')) : [ ];
this.todos = this.currentItem;
}
addTodo(item: Items) {
this.todos.push({
id: item.id,
title: item.title,
message: item.message,
done: false
});
item.title = '';
item.message = '';
localStorage.setItem('currentItem', JSON.stringify(this.todos));
console.log('retorno: ' + this.todos.title + ' titulo: ' + item.title);
this.router.navigate(['./list']);
}
ngOnInit() {}
}
HTML:
身份证件:
提图洛:
策略:
萨尔瓦多
我有一个错误:异常:无法读取未定义的属性“id”
有人知道怎么解决吗?这里可能有一些问题 错误可能是由于调用
addTodo
函数时没有参数或参数未定义
。这就是你所描述的错误的原因
另一个可能的问题可能是没有实现接口的类。虽然严格来说这不是必需的,但它可以帮助您使代码更好地利用TypeScript的类型安全性,从而帮助您防止错误
更新:在代码更新中,您确实在没有参数的情况下调用了addTodo
,这会导致函数中未定义该参数
有几种方法可以解决这个问题,但我将向您展示一种。在组件中,您可以添加属性
id
,title
,message
(请注意,最好将它们放置在对象中或重命名以保持清晰;这只是一个简单的示例)。然后可以使用这些属性添加todo。因此,您不必使用item.id
、item.title
和item.message
而是使用this.id
、this.title
和this.message
。这些字段与您提供的HTML模板中的ngModel
绑定所引用的字段相匹配。这里可能有一些问题
错误可能是由于调用addTodo
函数时没有参数或参数未定义
。这就是你所描述的错误的原因
另一个可能的问题可能是没有实现接口的类。虽然严格来说这不是必需的,但它可以帮助您使代码更好地利用TypeScript的类型安全性,从而帮助您防止错误
更新:在代码更新中,您确实在没有参数的情况下调用了addTodo
,这会导致函数中未定义该参数
有几种方法可以解决这个问题,但我将向您展示一种。在组件中,您可以添加属性
id
,title
,message
(请注意,最好将它们放置在对象中或重命名以保持清晰;这只是一个简单的示例)。然后可以使用这些属性添加todo。因此,您不必使用item.id
、item.title
和item.message
而是使用this.id
、this.title
和this.message
。这些字段与您提供的HTML模板中的ngModel
绑定匹配。谢谢!这样做很有效,我不需要接口,你也不需要接口。不过,使用接口/对象来存储数据,而不是直接将字段放在组件中,可能会更干净一些。不过,这两种方法当然都有效。谢谢!现在,我将尝试使用界面来完成它,只是为了学习谢谢!这样做很有效,我不需要接口,你也不需要接口。不过,使用接口/对象来存储数据,而不是直接将字段放在组件中,可能会更干净一些。不过,这两种方法当然都有效。谢谢!现在,我将尝试使用界面来实现它,只是为了学习
<div class="container">
<form (submit)="addTodo()">
<div class="form-group">
<label>Id:</label>
<input [(ngModel)]="id" class="textfield form-control" name="id">
</div>
<div class="form-group">
<label>Titulo:</label>
<input [(ngModel)]="title" class="textfield form-control" name="title">
</div>
<div class="form-group">
<label>Mensagem:</label>
<input [(ngModel)]="message" class="textfield form-control" name="message">
</div>
<button type="submit" class="btn btn-success">Salvar</button>
</form>
</div>