仅在构造函数实现中允许使用参数属性

时间:2019-02-11 09:26:41

标签: angular typescript

所以我已经编写了这段代码,这行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);
        }
      );
    });
  }

}

1 个答案:

答案 0 :(得分:0)

在以下位置删除私密

use(private lang: string): Promise<object> {

privatepublic仅用于类级别,而不用于函数级别(它们始终是私有的)。

类中的唯一函数接受public或/和private是构造函数,因为它将为该类分配值并创建属性。