Angular - 需要在导出类的内部/外部定义哪些变量?

时间:2018-05-08 02:48:05

标签: angular

在Angular教程中:https://stackblitz.com/angular/qmgqmlrqmye?file=src%2Fapp%2Fhero.service.ts

我们必须在导出的HeroService类和类内部的heroesUrl之外定义httpOptions。将一个移动到类的内部或外部会破坏应用程序。这是什么原因?我如何知道必须在内部或外部定义哪些变量?

代码示例:

import { HttpClient, HttpHeaders } from '@angular/common/http';

const httpOptions = {
  headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};

@Injectable({ providedIn: 'root' })
export class HeroService {

private heroesUrl = 'api/heroes';  // URL to web api

constructor(
  private http: HttpClient,
  private messageService: MessageService) { }

/** GET heroes from the server */
getHeroes (): Observable<Hero[]> {
  return this.http.get<Hero[]>(this.heroesUrl)
    .pipe(
      tap(heroes => this.log(`fetched heroes`)),
      catchError(this.handleError('getHeroes', []))
    );
}
...

1 个答案:

答案 0 :(得分:0)

您可以将这些内容中的任何一个放在课堂内外。我个人把所有这些东西放在课堂里,因为它们显然是它的一部分。

在一个类中定义的成员要么以private开头,这意味着它们只能在类中引用public,这意味着你可以从类外部引用它们,或者没有任何一个只是意味着它们它含蓄地公开。

让我们来看看我们如何在课堂内移动httpOptions。由于它只是一个类需要知道的实现细节,因此将它定义为私有成员是有意义的:     private httpOptions = { headers: new HttpHeaders({'Content-Type': 'application/json'}) }

现在,由于它是一个类成员,为了访问它,我们必须使用thisthis只是对类的上下文的引用,所以我们说给我this类中的成员。

您看到httpOptions被引用的任何地方都将其更改为this.httpOptions

希望你能看到你将如何做到这一点,并将它们定义为课堂外的等级。