- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我的 Angular 2 应用程序中,有一个组件包含一组对象,该对象将选择(单击)的对象传递给它的直接子组件。这确实显示了更详细的数据。如果给定的对象发生更改以发出另一个 http 请求以从数据库中获取相关评论,我正在使用“SimpleChanges”功能在此子组件中进行观察。
如果我尝试使用 npm 构建它,我会收到错误消息:
app/displayEntry.component.ts(23,41): error TS2339: Property 'entry' does not exist on type 'SimpleChanges'
如果我只是将这部分注释掉,启动 npm,最后再次将它放在那里并保存,就没有问题了(没有错误,它可以工作)。我的问题是,有没有办法解决这种行为,这会不会在以后造成任何我没有预见到的麻烦,或者我应该忽略它?感谢您的帮助
父组件:
import { Component, OnInit } from '@angular/core';
import { entry } from './Objekte/entry';
import { entryService } from './entry.service'
@Component({
templateUrl: 'app/Html_Templates/displayLastEntrys.template.html'
})
export class displayLastEntrys implements OnInit{
public entrys : entry[];
private entryChoosen: boolean;
private ChoosenEntry : entry;
constructor ( private entryservice : entryService){
this.entryChoosen = false;
}
ngOnInit() : void {
this.getData();
}
getData() {
this.entryservice.getFirstEntrys().then(entrys => this.entrys = entrys);
}
entryClicked(ent: entry){
this.entryChoosen = true;
this.ChoosenEntry = ent;
}
leaveEntry () {
this.entryChoosen = false;
}
voted( upordown : boolean ) {
}
}
子组件:
import { Component, Input, Injectable, OnChanges , SimpleChanges, Output, EventEmitter} from '@angular/core';
import { entry} from './Objekte/entry';
import { entryService } from './entry.service';
import { comment } from './Objekte/comments';
@Component({
selector: 'display-entry',
templateUrl: 'app/Html_Templates/displayEntry.template.html'
})
export class displayComponent implements OnChanges{
@Input() public entry : entry;
public comments : comment[];
private changecounter : number;
constructor(private service : entryService) {
this.changecounter = 0;
}
ngOnChanges(changes : SimpleChanges){
this.service.getComments(changes.entry.currentValue.id)
.then(com => this.comments = com )
.catch();
this.entry.viewed++;
// To implement :: change database
}
votedUp () : void {
this.entry.votes ++;
// To implement :: change database
}
votedDown () : void {
this.entry.votes --;
// To implement :: change database
}
}
最佳答案
公认的解决方案对于 TypeScript 来说不是最优的,因为您正在打败类型系统。
SimpleChanges
没有 entry
属性,因此编译器很正常地拒绝了。解决方案是将 changes
对象视为一个数组:
ngOnChanges(changes : SimpleChanges){
if (changes['entry']) {
this.service.getComments(changes['entry'].currentValue.id)
}
}
然后就可以继续强类型化ngOnChanges方法了。
关于node.js - Angular 2 SimpleChanges 对象在第一次 npm 启动时抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39763708/
angular 5 SimpleChange 中有两项 和 SimpleChanges , 官方文档看的不是很清楚,请大神解释一下??/ 最佳答案 SimpleChange 类表示从先前值到新值的基本
编译代码时出现此错误:找不到名称 SimpleChanges。我是 Angular 2 的新手,您能帮我找出错误所在吗?这是我的 home.ts: import { Component } from
我是 Angular 5 的新手,我正在从它提供的官方网站学习组件交互 ngOnChanges(changes: {[propKey: string]: SimpleChange}) {} 并且在生命
如主题,prop firstChange 和 method isFirstChange 之间的区别在哪里? 使用 prop 优于方法(或方法优于 prop)有什么优势吗? 两者似乎都返回相同的东西。
如果我们在当前组件的 ngOnChanges 钩子(Hook)的 SimpleChanges typescript 参数中进行类型检查,那就太好了。 这将防止我们检查的属性出现错误。 最佳答案 使用T
在我的 Angular 2 应用程序中,有一个组件包含一组对象,该对象将选择(单击)的对象传递给它的直接子组件。这确实显示了更详细的数据。如果给定的对象发生更改以发出另一个 http 请求以从数据库中
我是一名优秀的程序员,十分优秀!