小编doo*_*glu的帖子

如何在新的内部填充对象JS?

我有像对象的定义:

let translateObj: ITranslate;
Run Code Online (Sandbox Code Playgroud)

我尝试将其初始化为相应的界面:

let obj = new translateObj = {
          keyTranslate: 'subjectId',
          outName: 'name'
        }
Run Code Online (Sandbox Code Playgroud)

它不起作用......我可以使用这个后缀吗?

我试过这个:

export class MapperServiceArray<T> implements IMapperServiceArray<T> {
  public constructor(public key: string | number, public translate?: ITranslate) {
}
Run Code Online (Sandbox Code Playgroud)

我创建这样的实例:

 let mapperArray = new MapperServiceArray<ISubjectBase>('subjectId', {
          keyTranslate: 'subjectId',
          outName: 'name'
        });
Run Code Online (Sandbox Code Playgroud)

javascript typescript typescript2.0

8
推荐指数
1
解决办法
87
查看次数

为什么观察者方法被调用两次?

我有以下返回观察者的方法,但它被调用了两次:

public getClassesAndSubjects(school: number, whenDate: string): Observable<ClassesAndSubjects[]> {

    console.log('1');

    const observable = this.classService.GetClassesAndSubjects(school, whenDate);

    console.log("2");

    observable.subscribe(data => {
      if (!data.hasOwnProperty('errors')) {
        this.classesSubjects = data;

      }
    }, error => {
      console.log("ERROR loading GetClassesAndSubjects: " + error);
    });

    console.log("3");

    return observable;
  }
Run Code Online (Sandbox Code Playgroud)

我的意思是一条线路const observable = this.classService.GetClassesAndSubjects(school, whenDate);被调用两次并向服务器发送两次请求。

像这样调用:

this.classInstance.getClassesAndSubjects(school, date).subscribe(value => {
   // TODO 
});
Run Code Online (Sandbox Code Playgroud)

observable rxjs angular

2
推荐指数
1
解决办法
6612
查看次数

如何在 Typescript 中调用回调?

我已经声明了函数:

 _translate(value: T, callback: (name: T) => T): void;
Run Code Online (Sandbox Code Playgroud)

函数是:

public _translate(value: T, callback: T) {
    if (!this.translate) {
      callback(value);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何调用(使用)它?我尝试了以下方法:

this._translate(value, function(data: T) {
   console.log(data);
});
Run Code Online (Sandbox Code Playgroud)

这是行不通的

typescript typescript2.0

1
推荐指数
1
解决办法
6698
查看次数

如果找到元素,如何在数组中添加元素?

我用这个方法在数组中查找对象:

lat arr = [];
found = this.obj[objKey].filter(item => item[internKeyName] == 7047);
arr.push(found);
Run Code Online (Sandbox Code Playgroud)

问题是,如果没有找到元素,则将其添加undefined到数组中arr.怎么避免这个?

为什么它找不到带键的元素:"subjectId":

let objKey = 7047;
let k = "subjectId";
let v = 7047;

found = this.obj[objKey].filter(item => item[k] == v);

console.log(found);// undefined
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

javascript typescript typescript2.0

0
推荐指数
1
解决办法
79
查看次数