commit
72c22e17cc
|
@ -159,7 +159,7 @@ block ctor-syntax
|
||||||
We also leveraged TypeScript's constructor syntax for declaring
|
We also leveraged TypeScript's constructor syntax for declaring
|
||||||
parameters and properties simultaneously.
|
parameters and properties simultaneously.
|
||||||
|
|
||||||
再次借助TypeScript的构造器语法来同时定义参数和属性。
|
再次借助 TypeScript 的构造器语法来同时定义参数和属性。
|
||||||
|
|
||||||
:marked
|
:marked
|
||||||
Now we create a car by passing the engine and tires to the constructor.
|
Now we create a car by passing the engine and tires to the constructor.
|
||||||
|
@ -205,7 +205,7 @@ block ctor-syntax
|
||||||
during each test:
|
during each test:
|
||||||
|
|
||||||
`Car`类非常容易测试,因为现在我们对它的依赖有了完全的控制权。
|
`Car`类非常容易测试,因为现在我们对它的依赖有了完全的控制权。
|
||||||
在每个测试期间,我们可以往构造函数中传入mock对象,做想让它们做的事:
|
在每个测试期间,我们可以往构造函数中传入 mock 对象,做想让它们做的事:
|
||||||
|
|
||||||
- var stylePattern = { otl: /(new Car.*$)/gm };
|
- var stylePattern = { otl: /(new Car.*$)/gm };
|
||||||
+makeExample('dependency-injection/ts/app/car/car-creations.ts', 'car-ctor-instantiation-with-mocks', '', stylePattern)(format=".")
|
+makeExample('dependency-injection/ts/app/car/car-creations.ts', 'car-ctor-instantiation-with-mocks', '', stylePattern)(format=".")
|
||||||
|
@ -415,7 +415,7 @@ block ctor-syntax
|
||||||
that create the services our application requires.
|
that create the services our application requires.
|
||||||
We'll explain what [providers](#providers) are later in this chapter.
|
We'll explain what [providers](#providers) are later in this chapter.
|
||||||
|
|
||||||
我们必须通过注册**提供商 (provider)**来配置注入器,这些提供商为应用创建所需服务。
|
我们必须通过注册**提供商 (provider)** 来配置注入器,这些提供商为应用创建所需服务。
|
||||||
在本章的稍后部分会解释什么是[提供商](#providers)。
|
在本章的稍后部分会解释什么是[提供商](#providers)。
|
||||||
|
|
||||||
We can either register a provider within an [NgModule](ngmodule.html) or in application components
|
We can either register a provider within an [NgModule](ngmodule.html) or in application components
|
||||||
|
@ -519,7 +519,7 @@ block ctor-syntax
|
||||||
Angular injector to inject an instance of
|
Angular injector to inject an instance of
|
||||||
`HeroService` whenever it creates a new `HeroListComponent`.
|
`HeroService` whenever it creates a new `HeroListComponent`.
|
||||||
|
|
||||||
构造函数参数类型、`@Component`装饰器和父级的`providers`信息合起来告诉Angular的注入器,
|
构造函数参数类型、`@Component`装饰器和父级的`providers`信息合起来告诉 Angular 的注入器,
|
||||||
任何新建`HeroListComponent`的时候,注入一个`HeroService`的实例。
|
任何新建`HeroListComponent`的时候,注入一个`HeroService`的实例。
|
||||||
|
|
||||||
#di-metadata
|
#di-metadata
|
||||||
|
@ -626,7 +626,7 @@ block ctor-syntax
|
||||||
//- FIXME refer to Dart API when that page becomes available.
|
//- FIXME refer to Dart API when that page becomes available.
|
||||||
- var injUrl = '../api/core/index/Injectable-decorator.html';
|
- var injUrl = '../api/core/index/Injectable-decorator.html';
|
||||||
h3#injectable Why @Injectable()?
|
h3#injectable Why @Injectable()?
|
||||||
h3#injectable 为什么要用@Injectable()?
|
h3#injectable 为什么要用 @Injectable()?
|
||||||
:marked
|
:marked
|
||||||
**<a href="#{injUrl}">@Injectable()</a>** marks a class as available to an
|
**<a href="#{injUrl}">@Injectable()</a>** marks a class as available to an
|
||||||
injector for instantiation. Generally speaking, an injector will report an
|
injector for instantiation. Generally speaking, an injector will report an
|
||||||
|
@ -661,7 +661,7 @@ block injectable-not-always-needed-in-ts
|
||||||
ul(style="font-size:inherit")
|
ul(style="font-size:inherit")
|
||||||
li
|
li
|
||||||
p <b>Future proofing:</b> No need to remember <code>@Injectable()</code> when we add a dependency later.
|
p <b>Future proofing:</b> No need to remember <code>@Injectable()</code> when we add a dependency later.
|
||||||
p <b>面向未来:</b> 没有必要记得在后来添加依赖的时候添加<code>@Injectable()</code>。
|
p <b>面向未来:</b> 没有必要记得在后来添加依赖的时候添加 <code>@Injectable()</code>。
|
||||||
li
|
li
|
||||||
p <b>Consistency:</b> All services follow the same rules, and we don't have to wonder why #{_a} #{_decorator} is missing.
|
p <b>Consistency:</b> All services follow the same rules, and we don't have to wonder why #{_a} #{_decorator} is missing.
|
||||||
p <b>一致性:</b>所有的服务都遵循同样的规则,不需要考虑为什么某个地方少了一个。
|
p <b>一致性:</b>所有的服务都遵循同样的规则,不需要考虑为什么某个地方少了一个。
|
||||||
|
@ -681,7 +681,8 @@ block injectable-not-always-needed-in-ts
|
||||||
identify a class as a target for instantiation by an injector.
|
identify a class as a target for instantiation by an injector.
|
||||||
|
|
||||||
我们**可以**添加它。但是没有必要,因为`HerosComponent`已经有`@Component`装饰器了,
|
我们**可以**添加它。但是没有必要,因为`HerosComponent`已经有`@Component`装饰器了,
|
||||||
`@Component`(和随后将会学到的`@Directive`和`@Pipe`一样)是 <a href="#{injUrl}">Injectable</a> 的子类型。实际上,正是这些`Injectable`装饰器是把一个类标识为注入器实例化的目标。
|
`@Component`(和随后将会学到的`@Directive`和`@Pipe`一样)是 <a href="#{injUrl}">Injectable</a> 的子类型。
|
||||||
|
实际上,正是这些`Injectable`装饰器是把一个类标识为注入器实例化的目标。
|
||||||
|
|
||||||
+ifDocsFor('ts')
|
+ifDocsFor('ts')
|
||||||
.l-sub-section
|
.l-sub-section
|
||||||
|
|
Loading…
Reference in New Issue