所以我已经编写了这段代码,这行use(private lang: string): Promise<object>
给我一个错误“仅在构造函数实现中允许使用参数属性”
当我删除访问修饰符private
时它可以工作,但是我很好奇为什么它会给我这个错误,正确的方法是什么?
@Injectable()
export class TranslateService {
public data: object = {};
constructor(private http: HttpClient) {}
use(private lang: string): Promise<object> {
return new Promise<object>((resolve, reject) => {
const langPath = `assets/i18n/${lang || 'en'}.json`;
this.http.get<object>(langPath).subscribe(
translation => {
this.data = Object.assign({}, translation || {});
resolve(this.data);
},
error => {
this.data = {};
resolve(this.data);
}
);
});
}
}
答案 0 :(得分:0)
在以下位置删除私密
use(private lang: string): Promise<object> {
private
和public
仅用于类级别,而不用于函数级别(它们始终是私有的)。
类中的唯一函数接受public
或/和private
是构造函数,因为它将为该类分配值并创建属性。