我有像对象的定义:
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) 我有以下返回观察者的方法,但它被调用了两次:
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) 我已经声明了函数:
_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)
这是行不通的
我用这个方法在数组中查找对象:
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)