在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', []))
);
}
...
答案 0 :(得分:0)
您可以将这些内容中的任何一个放在课堂内外。我个人把所有这些东西放在课堂里,因为它们显然是它的一部分。
在一个类中定义的成员要么以private
开头,这意味着它们只能在类中引用public
,这意味着你可以从类外部引用它们,或者没有任何一个只是意味着它们它含蓄地公开。
让我们来看看我们如何在课堂内移动httpOptions
。由于它只是一个类需要知道的实现细节,因此将它定义为私有成员是有意义的:
private httpOptions = {
headers: new HttpHeaders({'Content-Type': 'application/json'})
}
现在,由于它是一个类成员,为了访问它,我们必须使用this
。 this
只是对类的上下文的引用,所以我们说给我this
类中的成员。
您看到httpOptions
被引用的任何地方都将其更改为this.httpOptions
希望你能看到你将如何做到这一点,并将它们定义为课堂外的等级。