文字微调
This commit is contained in:
parent
8f01383b6c
commit
b97a9585c2
|
@ -139,7 +139,7 @@ include ../_util-fns
|
|||
:marked
|
||||
We also leverage TypeScript's constructor syntax for declaring parameters and properties simultaneously.
|
||||
|
||||
我们同时借助TypeScript的构造器语法来同时定义参数和属性。
|
||||
我们再次借助TypeScript的构造器语法来同时定义参数和属性。
|
||||
// #docregion why-3-2
|
||||
:marked
|
||||
Now we create a car by passing the engine and tires to the constructor.
|
||||
|
@ -503,7 +503,7 @@ include ../_util-fns
|
|||
That's how the Angular injector knows to inject an instance of the `HeroService` when it
|
||||
creates a new `HeroListComponent`.
|
||||
|
||||
Angular的注入器是怎么知道在创建`HeroListComponent`时注入一个`HeroService`的实例的?这就是原理。
|
||||
Angular的注入器是怎么知道在创建`HeroListComponent`时该注入一个`HeroService`的实例的?这就是原因。
|
||||
// #docregion di-create-injector-implicitly-1
|
||||
:marked
|
||||
<a id="di-metadata"></a>
|
||||
|
@ -560,7 +560,7 @@ include ../_util-fns
|
|||
Listing dependencies as constructor parameters may be all we need to test application parts effectively.
|
||||
|
||||
我们前面强调过,设计一个适合依赖注入的类,可以让这个类更容易测试。
|
||||
要有效的测试应用的一部分,所有我们所需要做的,就只是在构造函数的参数中列出依赖。
|
||||
要有效的测试应用中的一部分,需要我们做的一切,就只是在构造函数的参数中列出依赖。
|
||||
|
||||
For example, we can create a new `HeroListComponent` with a mock service that we can manipulate
|
||||
under test:
|
||||
|
@ -594,7 +594,7 @@ include ../_util-fns
|
|||
|
||||
Here is the revision compared to the original.
|
||||
|
||||
下面是在原来的类的基础上做的修改:
|
||||
下面是在原始类的基础上所做的修改:
|
||||
// #enddocregion di-service-service-1
|
||||
+makeTabs(
|
||||
`dependency-injection/ts/app/heroes/hero.service.2.ts,
|
||||
|
@ -766,7 +766,7 @@ code-example(format, language="html").
|
|||
Our `HeroService` currently requires a `Logger`. What if we could get by without a logger?
|
||||
We'd use it if we had it, ignore it if we didn't. We can do that.
|
||||
|
||||
我们的`HeroService`目前需要`Logger`。如果我们在没有日志服务的时候可以照样继续工作?
|
||||
我们的`HeroService`目前需要`Logger`。如果我们希望在没有日志服务的时候照样可以继续工作呢?
|
||||
我们有它就用,没它就忽略。这也好办。
|
||||
|
||||
// #enddocregion logger-service-4
|
||||
|
@ -1142,7 +1142,7 @@ code-example(format, language="html").
|
|||
|
||||
`deps`属性是一个[供应商令牌](#token)数组。
|
||||
`Logger`和`UserService`类作为它们自身供应商的令牌。
|
||||
注入器解析这些令牌,并且把相应的服务注入到工厂函数参数中所对应的参数中去。
|
||||
注入器解析这些令牌,并且把相应的服务注入到工厂函数中相应的参数中去。
|
||||
// #enddocregion providers-factory-4
|
||||
// #docregion providers-factory-5
|
||||
- var lang = current.path[1]
|
||||
|
@ -1365,8 +1365,8 @@ p 解决方案是定义和使用用一个!{opaquetoken}(不透明的令牌)
|
|||
We rarely work directly with an injector.
|
||||
Here's an `InjectorComponent` that does.
|
||||
|
||||
我们很少直接使用注入器工作。
|
||||
这里的`InjectorComponent`直接使用了注入器。
|
||||
这里的`InjectorComponent`直接使用了注入器,
|
||||
但我们很少直接使用注入器工作。
|
||||
// #enddocregion appendix-explicit-injector-1
|
||||
+makeExample('dependency-injection/ts/app/injector.component.ts', 'injector', 'app/injector.component.ts')
|
||||
// #docregion appendix-explicit-injector-2
|
||||
|
|
|
@ -77,7 +77,7 @@ include ../_quickstart_repo
|
|||
much more readable HTML.
|
||||
|
||||
模板是包在反引号(\`)中的一个多行字符串。
|
||||
反引号(\`) —— 不是单引号(') —— 有很多好用的特性。我们在这里用到的是它把一个字符串写在多行上的能力,这样我们的HTML模板更易于阅读。
|
||||
反引号(\`) —— 不是单引号(') —— 有很多好用的特性。我们在这里用到的是它把一个字符串写在多行上的能力,这样我们的HTML模板就会更容易阅读。
|
||||
|
||||
:marked
|
||||
Angular automatically pulls the value of the `title` and `myHero` properties from the component and
|
||||
|
@ -104,7 +104,7 @@ include ../_quickstart_repo
|
|||
Remember back in QuickStart that we added the `<my-app>` element to the body of our `index.html`
|
||||
|
||||
注意`@Component`装饰器中指定的CSS选择器`selector`,它指定了一个叫`my-app`的元素。
|
||||
回忆下,在快速开始章节中,我们曾把一个`<my-app>`元素添加到`index.html`的`body`里。
|
||||
回忆下,在“快速开始”一章中,我们曾把一个`<my-app>`元素添加到`index.html`的`body`里。
|
||||
+makeExample('displaying-data/ts/index.html', 'my-app')(format=".")
|
||||
|
||||
:marked
|
||||
|
|
|
@ -36,7 +36,7 @@ include ../_util-fns
|
|||
|
||||
- two-way data binding with `[(ngModel)]` syntax for reading and writing values to input controls
|
||||
|
||||
- 使用`[(ngModel)]`语法实现双向数据绑定,以便输入控件的值读取和写入
|
||||
- 使用`[(ngModel)]`语法实现双向数据绑定,以便于读取和写入输入控件的值
|
||||
|
||||
- using `ngControl` to track the change state and validity of form controls
|
||||
|
||||
|
@ -98,7 +98,7 @@ figure.image-display
|
|||
Here at the *Hero Employment Agency* we use this form to maintain personal information about the
|
||||
heroes in our stable. Every hero needs a job. It's our company mission to match the right hero with the right crisis!
|
||||
|
||||
这里是*英雄职介中心*,我们使用这个表单来维护我们候选英雄们的个人信息。每个英雄都需要一份工作。我们公司的任务就是让正确的英雄去解决他/她所擅长对付的危机!
|
||||
这里是*英雄职介中心*,我们使用这个表单来维护我们候选英雄们的个人信息。每个英雄都需要一份工作。我们公司的任务就是让正确的英雄去解决他/她所擅长应对的危机!
|
||||
|
||||
Two of the three fields on this form are required. Required fields have a green bar on the left to make them easy to spot.
|
||||
|
||||
|
@ -286,7 +286,7 @@ code-example(format="").
|
|||
write (or read) large stretches of HTML and few editors are much help with files that have a mix of HTML and code.
|
||||
We also like short files with a clear and obvious purpose like this one.
|
||||
|
||||
没有什么答案在所有场合都总是“正确”的。当行内联模板足够短的时候,我们喜欢用它。
|
||||
没有什么答案在所有场合都总是“正确”的。当内联模板足够短的时候,我们更喜欢用它。
|
||||
但大多数的表单模板都不短。普遍来讲,TypeScript和JavaScript文件不会是写大型HTML的好地方(也不好读)。
|
||||
而且没有几个编辑器能对混写的HTML和代码提供足够的帮助。
|
||||
我们还是喜欢写成像这个一样清晰明确的短文件。
|
||||
|
|
Loading…
Reference in New Issue