fix: 把遗漏的 我们 替换成 你

This commit is contained in:
Zhicheng Wang 2018-03-23 09:43:02 +08:00
parent a523fbdedb
commit d0292bbe82
18 changed files with 29 additions and 29 deletions

View File

@ -24,7 +24,7 @@ Angular takes over, presenting your application content in a browser and
responding to user interactions according to the instructions you've provided.
然后,你通过*引导**根模块*来启动该应用。
Angular 在浏览器中接管、展现应用的内容,并根据我们提供的操作指令响应用户的交互。
Angular 在浏览器中接管、展现应用的内容,并根据提供的操作指令响应用户的交互。
Of course, there is more to it than this.
You'll learn the details in the pages that follow. For now, focus on the big picture.
@ -176,7 +176,7 @@ JavaScript 中,每个*文件*是一个模块,文件中定义的所有对象
These are two different and _complementary_ module systems. Use them both to write your apps.
这两个模块化系统是不同但*互补*的,我们在写程序时都会用到。
这两个模块化系统是不同但*互补*的,在写程序时都会用到。
### Angular libraries
@ -688,7 +688,7 @@ Angular 不会*强行保障*这些原则。
Angular does help you *follow* these principles by making it easy to factor your
application logic into services and make those services available to components through *dependency injection*.
Angular 帮助你*遵循*这些原则 —— 它让我们能轻易地把应用逻辑拆分到服务,并通过*依赖注入*来在组件中使用这些服务。
Angular 帮助你*遵循*这些原则 —— 它让能轻易地把应用逻辑拆分到服务,并通过*依赖注入*来在组件中使用这些服务。
<hr/>

View File

@ -30,7 +30,7 @@ For every Angular component you write, you may define not only an HTML template,
but also the CSS styles that go with that template,
specifying any selectors, rules, and media queries that you need.
对你编写的每个 Angular 组件来说,除了定义 HTML 模板之外,我们还要定义用于模板的 CSS 样式、
对你编写的每个 Angular 组件来说,除了定义 HTML 模板之外,还要定义用于模板的 CSS 样式、
指定任意的选择器、规则和媒体查询。
One way to do this is to set the `styles` property in the component metadata.

View File

@ -90,7 +90,7 @@ What does `Engine` depend upon? What does that dependency depend on?
Will a new instance of `Engine` make an asynchronous call to the server?
You certainly don't want that going on during tests.
当给 `Car` 类写测试的时候,我们就会受制于它背后的那些依赖。
当给 `Car` 类写测试的时候,就会受制于它背后的那些依赖。
能在测试环境中成功创建新的 `Engine` 吗?
`Engine` 自己又依赖什么?那些依赖本身又依赖什么?
`Engine` 的新实例会发起到服务器的异步调用吗?

View File

@ -334,7 +334,7 @@ See also the [*APP_BASE_HREF*](api/common/APP_BASE_HREF "API: APP_BASE_HREF") al
In development, you typically start the server in the folder that holds `index.html`.
That's the root folder and you'd add `<base href="/">` near the top of `index.html` because `/` is the root of the app.
在开发期间,你通常会在 `index.html` 所在的目录中启动服务器。这个目录就是根目录,因为 `/` 就是本应用的根,所以我们要在 `index.html` 的顶部添加 `<base href="/">`
在开发期间,你通常会在 `index.html` 所在的目录中启动服务器。这个目录就是根目录,因为 `/` 就是本应用的根,所以要在 `index.html` 的顶部添加 `<base href="/">`
But on the shared or production server, you might serve the app from a subfolder.
For example, when the URL to load the app is something like `http://www.mysite.com/my/app/`,

View File

@ -109,7 +109,7 @@ the view, such as a keystroke, a timer completion, or a response to an HTTP requ
Notice that you don't call **new** to create an instance of the `AppComponent` class.
Angular is creating an instance for you. How?
注意,你没有调用 **new** 来创建 `AppComponent` 类的实例,是 Angular 替我们创建了它。那么它是如何创建的呢?
注意,你没有调用 **new** 来创建 `AppComponent` 类的实例,是 Angular 替创建了它。那么它是如何创建的呢?
The CSS `selector` in the `@Component` decorator specifies an element named `<app-root>`.
That element is a placeholder in the body of your `index.html` file:
@ -382,7 +382,7 @@ Sometimes an app needs to display a view or a portion of a view only under speci
Let's change the example to display a message if there are more than three heroes.
让我们改这个例子,如果多于三位英雄,显示一条消息。
来改一下这个例子,如果多于三位英雄,显示一条消息。
The Angular `ngIf` directive inserts or removes an element based on a _truthy/falsy_ condition.
To see it in action, add the following paragraph at the bottom of the template:

View File

@ -175,7 +175,7 @@ exists on this specific instance of the component. How do you know it's
this specific instance? Because it's referring to `adHost` and `adHost` is the
directive you set up earlier to tell Angular where to insert dynamic components.
接下来,你要把 `viewContainerRef` 指向这个组件的现有实例。但我们怎么才能找到这个实例呢?
接下来,你要把 `viewContainerRef` 指向这个组件的现有实例。但怎么才能找到这个实例呢?
很简单,因为它指向了 `adHost`,而这个 `adHost` 就是你以前设置过的指令,用来告诉 Angular 该把动态组件插入到什么位置。
As you may recall, `AdDirective` injects `ViewContainerRef` into its constructor.

View File

@ -251,7 +251,7 @@ to the `FormControl`.
In template-driven forms, you don't have direct access to the `FormControl` instance, so you can't pass the
validator in like you can for reactive forms. Instead, you need to add a directive to the template.
在模板驱动表单中,你不用直接访问 `FormControl` 实例。所以我们不能像响应式表单中那样把验证器传进去,而应该在模板中添加一个指令。
在模板驱动表单中,你不用直接访问 `FormControl` 实例。所以不能像响应式表单中那样把验证器传进去,而应该在模板中添加一个指令。
The corresponding `ForbiddenValidatorDirective` serves as a wrapper around the `forbiddenNameValidator`.

View File

@ -846,7 +846,7 @@ The `ng-valid`/`ng-invalid` pair is the most interesting, because you want to se
strong visual signal when the values are invalid. You also want to mark required fields.
To create such visual feedback, add definitions for the `ng-*` CSS classes.
(`ng-valid` | `ng-invalid`)这一对是你最感兴趣的。当数据变得无效时,我们希望发出强力的视觉信号,
(`ng-valid` | `ng-invalid`)这一对是最有趣的部分,因为当数据变得无效时,你希望发出强力的视觉信号,
还想要标记出必填字段。可以通过加入自定义 CSS 来提供视觉反馈。
*Delete* the `#spy` template reference variable and the `TODO` as they have served their purpose.
@ -891,7 +891,7 @@ You can improve the form. The _Name_ input box is required and clearing it turns
That says something is wrong but the user doesn't know *what* is wrong or what to do about it.
Leverage the control's state to reveal a helpful message.
你还能做的更好。“Name” 输入框是必填的,清空它会让左侧的条变红。这表示*某些东西*是错的,但我们不知道错在哪里,或者如何纠正。
你还能做的更好。“Name” 输入框是必填的,清空它会让左侧的条变红。这表示*某些东西*是错的,但用户不知道错在哪里,或者如何纠正。
可以借助 `ng-invalid` 类来给出有用的提示。
When the user deletes the name, the form should look like this:

View File

@ -1459,7 +1459,7 @@ by returning an observable of simulated events.
[Cross-Site Request Forgery (XSRF)](https://en.wikipedia.org/wiki/Cross-site_request_forgery) is an attack technique by which the attacker can trick an authenticated user into unknowingly executing actions on your website. `HttpClient` supports a [common mechanism](https://en.wikipedia.org/wiki/Cross-site_request_forgery#Cookie-to-Header_Token) used to prevent XSRF attacks. When performing HTTP requests, an interceptor reads a token from a cookie, by default `XSRF-TOKEN`, and sets it as an HTTP header, `X-XSRF-TOKEN`. Since only code that runs on your domain could read the cookie, the backend can be certain that the HTTP request came from your client application and not an attacker.
[跨站请求伪造 (XSRF)](https://en.wikipedia.org/wiki/Cross-site_request_forgery)是一个攻击技术,它能让攻击者假冒一个已认证的用户在你的网站上执行未知的操作。`HttpClient` 支持一种[通用的机制](https://en.wikipedia.org/wiki/Cross-site_request_forgery#Cookie-to-Header_Token)来防范 XSRF 攻击。当执行 HTTP 请求时,一个拦截器会从 cookie 中读取 XSRF 令牌(默认名字为 `XSRF-TOKEN`),并且把它设置为一个 HTTP 头 `X-XSRF-TOKEN`,由于只有运行在你自己的域名下的代码才能读取这个 cookie因此后端可以确认这个 HTTP 请求真的来自我们的客户端应用,而不是攻击者。
[跨站请求伪造 (XSRF)](https://en.wikipedia.org/wiki/Cross-site_request_forgery)是一个攻击技术,它能让攻击者假冒一个已认证的用户在你的网站上执行未知的操作。`HttpClient` 支持一种[通用的机制](https://en.wikipedia.org/wiki/Cross-site_request_forgery#Cookie-to-Header_Token)来防范 XSRF 攻击。当执行 HTTP 请求时,一个拦截器会从 cookie 中读取 XSRF 令牌(默认名字为 `XSRF-TOKEN`),并且把它设置为一个 HTTP 头 `X-XSRF-TOKEN`,由于只有运行在你自己的域名下的代码才能读取这个 cookie因此后端可以确认这个 HTTP 请求真的来自的客户端应用,而不是攻击者。
By default, an interceptor sends this cookie on all mutating requests (POST, etc.)
to relative URLs but not on GET/HEAD requests or
@ -1646,7 +1646,7 @@ It takes the same arguments but returns an array of matching requests.
Once returned, these requests are removed from future matching and
you are responsible for flushing and verifying them.
如果你需要在测试中对重复的请求进行响应,可以使用 `match()` API 来代替 `expectOne()`,它的参数不变,但会返回一个与这些请求相匹配的数组。一旦返回,这些请求就会从将来要匹配的列表中移除,我们要自己验证和刷新flush它。
如果你需要在测试中对重复的请求进行响应,可以使用 `match()` API 来代替 `expectOne()`,它的参数不变,但会返回一个与这些请求相匹配的数组。一旦返回,这些请求就会从将来要匹配的列表中移除,要自己验证和刷新flush它。
<code-example
path="http/src/testing/http-client.spec.ts"

View File

@ -793,7 +793,7 @@ To prevent this issue, write a constructor that attempts to inject the module or
from the root app injector. If the injection succeeds, the class has been loaded a second time.
You can throw an error or take other remedial action.
为了防范这种风险,可以写一个构造函数,它会尝试从应用的根注入器中注入该模块或服务。如果这种注入成功了,那就说明这个类是被第二次加载的,我们就可以抛出一个错误,或者采取其它挽救措施。
为了防范这种风险,可以写一个构造函数,它会尝试从应用的根注入器中注入该模块或服务。如果这种注入成功了,那就说明这个类是被第二次加载的,就可以抛出一个错误,或者采取其它挽救措施。
Certain NgModules, such as `BrowserModule`, implement such a guard.
Here is a custom constructor for an NgModule called `CoreModule`.

View File

@ -268,7 +268,7 @@ You can remove packages that you don't need but how can you be sure that you won
As a practical matter, it's better to install a package you don't need than worry about it.
Extra packages and package files on your local development machine are harmless.
你可以移除这些不需要的包,不过我们怎么知道哪些是不需要的呢?
你可以移除这些不需要的包,不过怎么知道哪些是不需要的呢?
实际上,安装不需要的包好过担心缺少某个包。
在你本机开发环境下存在无用的包和文件并没有害处。

View File

@ -163,7 +163,7 @@ When creating an observable you should determine how you want that observable to
Lets look at an example that counts from 1 to 3, with a one-second delay after each number emitted.
我们来看一个从 1 到 3 进行计数的例子,它每发出一个数字就会等待 1 秒。
来看一个从 1 到 3 进行计数的例子,它每发出一个数字就会等待 1 秒。
<code-example path="observables/src/multicasting.ts" region="delay_sequence" title="Create a delayed sequence"></code-example>

View File

@ -677,7 +677,7 @@ In the previous code sample, the second `fetch` pipe binding demonstrates more p
It displays the same hero data in JSON format by chaining through to the built-in `JsonPipe`.
第二个绑定除了用到 `FetchPipe` 之外还链接了更多管道。
把获取数据的结果同时显示在第一个绑定和第二个绑定中。第二个绑定中,我们通过链接到一个内置管道 `JsonPipe` 把它转成了 JSON 格式。
通过串联上内置管道 `JsonPipe` 来把英雄数据显示成了 JSON 格式。
<div class="callout is-helpful">

View File

@ -1355,7 +1355,7 @@ Then return here to learn about _form array_ properties.
So far, you've seen `FormControls` and `FormGroups`.
A `FormGroup` is a named object whose property values are `FormControls` and other `FormGroups`.
以前,我们见过了 `FormControl``FormGroup`
以前,你已见过 `FormControl``FormGroup`
`FormGroup` 是一个命名对象,它的属性值是 `FormControl` 和其它的 `FormGroup`
Sometimes you need to present an arbitrary number of controls or groups.

View File

@ -1165,7 +1165,7 @@ for navigation. Thanks to `pushState`, you can make in-app URL paths look the wa
look, e.g. `localhost:3000/crisis-center`. The in-app URLs can be indistinguishable from server URLs.
路由器使用浏览器的<a href="https://developer.mozilla.org/en-US/docs/Web/API/History_API#Adding_and_modifying_history_entries" target="_blank" title="HTML5 browser history push-state">history.pushState</a>进行导航。
感谢 `pushState`!有了它,你就能按所期望的样子来显示应用内部的 URL 路径,比如:`localhost:3000/crisis-center`。虽然我们使用的全部是客户端合成的视图,但应用内部的这些 URL 看起来和来自服务器的没有什么不同。
感谢 `pushState`!有了它,你就能按所期望的样子来显示应用内部的 URL 路径,比如:`localhost:3000/crisis-center`。虽然使用的全部是客户端合成的视图,但应用内部的这些 URL 看起来和来自服务器的没有什么不同。
Modern HTML5 browsers were the first to support `pushState` which is why many people refer to these URLs as
"HTML5 style" URLs.
@ -1981,7 +1981,7 @@ While you could continue to add files to the `src/app/` folder,
that is unrealistic and ultimately not maintainable.
Most developers prefer to put each feature area in its own folder.
虽然我们也可以把文件都放在 `src/app/` 目录下,但那样是不现实的,而且很难维护。
虽然也可以把文件都放在 `src/app/` 目录下,但那样是不现实的,而且很难维护。
大部分开发人员更喜欢把每个特性区都放在它自己的目录下。
You are about to break up the app into different *feature modules*, each with its own concerns.
@ -2166,7 +2166,7 @@ In the `AppRoutingModule`, you used the static **`RouterModule.forRoot`** method
In a feature module you use the static **`forChild`** method.
这里有少量但是关键的不同点。
`AppRoutingModule` 中,你使用了静态的 `RouterModule.`**`forRoot`**方法来注册我们的路由和全应用级服务提供商。
`AppRoutingModule` 中,你使用了静态的 `RouterModule.`**`forRoot`**方法来注册路由和全应用级服务提供商。
在特性模块中,你要改用**`forChild`**静态方法。
<div class="l-sub-section">
@ -4108,7 +4108,7 @@ You could permit access only to authenticated users or to users with a specific
You might block or limit access until the user's account is activated.
应用程序通常会根据访问者来决定是否授予某个特性区的访问权。
我们可以只对已认证过的用户或具有特定角色的用户授予访问权,还可以阻止或限制用户访问权,直到用户账户激活为止。
可以只对已认证过的用户或具有特定角色的用户授予访问权,还可以阻止或限制用户访问权,直到用户账户激活为止。
The `CanActivate` guard is the tool to manage these navigation business rules.
@ -4247,7 +4247,7 @@ property but it's not using a `component`.
You haven't made a mistake in the configuration.
You've defined a _component-less_ route.
来看 `AdminComponent` 下的子路由,我们有一个带 **path****children** 的子路由,
来看 `AdminComponent` 下的子路由,这里有一个带 **path****children** 的子路由,
但它没有使用 **component**。这并不是配置中的失误,而是在使用**无组件**路由。
The goal is to group the `Crisis Center` management routes under the `admin` path.
@ -4511,7 +4511,7 @@ If the user cancels, you'll stay put and allow more changes.
If the user approves, the app can save.
最好能暂停,并让用户决定该怎么做。
如果用户选择了取消,我们就留下来,并允许更多改动。
如果用户选择了取消,就留下来,并允许更多改动。
如果用户选择了确认,那就进行保存。
You still might delay navigation until the save succeeds.
@ -5501,7 +5501,7 @@ So instead, you'll update the empty path route in `app-routing.module.ts` to red
Since `RouterLink`s aren't tied to route configuration, you'll need to update the associated router links so they remain active when the new route is active. You'll update the `app.component.ts` template for the `/heroes` routerLink.
由于 `RouterLink` 指令没有关联到路由配置,所以你需要修改相关的路由链接,以便在新的路由激活时,它们也能保持激活状态。我们要修改 `app.component.ts` 模板中的 `/heroes` 路由链接。
由于 `RouterLink` 指令没有关联到路由配置,所以你需要修改相关的路由链接,以便在新的路由激活时,它们也能保持激活状态。要修改 `app.component.ts` 模板中的 `/heroes` 路由链接。
<code-example path="router/src/app/app.component.ts" linenums="false" title="src/app/app.component.ts (superheroes active routerLink)">

View File

@ -227,7 +227,7 @@ Before applying a structural directive, you might want to pause for a moment
to consider the consequences of adding and removing elements and of creating and destroying components.
**同样的考量也适用于每一个结构型指令,无论是内置的还是自定义的。**
你应该提醒自己以及我们指令的使用者,来仔细考虑添加元素、移除元素以及创建和销毁组件的后果。
你应该提醒自己慎重考虑添加元素、移除元素以及创建和销毁组件的后果。
{@a asterisk}

View File

@ -1379,7 +1379,7 @@ bring that application to the brave new world of Angular.
在本节和下节中,你将看一个完整的例子,它使用 `upgrade` 模块准备和升级了一个应用程序。
该应用就是来自[原 AngularJS 教程](https://docs.angularjs.org/tutorial)中的[Angular PhoneCat](https://github.com/angular/angular-phonecat)。
那是我们当初开始 Angular 探险之旅的起点
那是我们很多人当初开始 Angular 探险之旅的地方
现在,你会看到如何把该应用带入 Angular 的美丽新世界。
During the process you'll learn how to apply the steps outlined in the

View File

@ -852,7 +852,7 @@ Reconfigure [Karma](https://karma-runner.github.io/1.0/index.html) to use Webpac
You don't precompile the TypeScript; Webpack transpiles the Typescript files on the fly, in memory, and feeds the emitted JS directly to Karma.
There are no temporary files on disk.
你不用预编译 TypeScriptWebpack 随时在内存中转译我们的 TypeScript 文件,并且把产出的 JS 直接反馈给 Karma。
你不用预编译 TypeScriptWebpack 会随时在内存中转译这些 TypeScript 文件,并且把产出的 JS 直接反馈给 Karma。
硬盘上没有任何临时文件。
The `karma-test-shim` tells Karma what files to pre-load and