@title
更新记录

@intro
最新文档更新历史记录。

@description



The Angular documentation is a living document with continuous improvements.
This log calls attention to recent significant changes.

我们将持续不断的更新和改进Angular文档。本日志记录了近期最重要的变更。

## Updated to Angular 4.0. Documentation for Angular 2.x can be found at [v2.angular.io](https://v2.angular.io).

## 更新到 Angular 4.0 。Angular 2.x 的文档在 [v2.angular.io](https://v2.angular.io) 。

## All mention of moduleId removed. "Component relative paths" cookbook deleted (2017-03-13)

## 移除了所有的moduleId引用。移除了“组件相对路径” 的烹饪书。(2017-03-13)

We added a new SystemJS plugin (systemjs-angular-loader.js) to our recommended SystemJS configuration.
This plugin dynamically converts "component-relative" paths in templateUrl and styleUrls to "absolute paths" for you.

我们往建议的SystemJS配置中新增了一个SystemJS插件 (systemjs-angular-loader.js) 。
这个插件可以帮你把templateUrl和styleUrls中的组件相对路径动态转换为绝对路径。

We strongly encourage you to only write component-relative paths.
That is the only form of URL discussed in these docs. You no longer need to write @Component({ moduleId: module.id }), nor should you.

我们强烈建议你只写组件相对路径。
这也是本文档中所使用的唯一形式。你不必再写`@Component({ moduleId: module.id })`，而且也不应该再这么写。

## NEW: Downloadable examples for each guide (2017-02-28)

## 新增：每篇指南都增加了可下载的范例程序 (2017-02-28)

Now you can download the sample code for any guide and run it locally.
Look for the new download links next to the "live example" links.

现在你可以为任何一篇指南下载范例程序，并且在本地运行它了。
请在“在线例子”的链接后面查找新的下载链接。

## Template Syntax/Structural Directives: refreshed (2017-02-06)

## 模板语法/结构型指令：更新了 (2017-02-06)

The [_Template-Syntax_](guide/template-syntax) and [_Structural Directives_](guide/structural-directives)
guides were significantly revised for clarity, accuracy, and current recommended practices.
Discusses `<ng-container>`.
Revised samples are more clear and cover all topics discussed.

对[模板语法](guide/template-syntax) 和 [结构型指令](guide/structural-directives)这两篇指南做了大幅修改，来让它们更加清晰、准确，并符合当前的最佳实践。
讨论了`<ng-container>`。
修改了例子，来让它们更清晰，并且覆盖了所有讨论到的主题。

## NEW: Samples re-structured with `src/` folder (2017-02-02)

## 新增：调整了范例程序的结构，移到了`src/`文件夹 (2017-02-02)

All documentation samples have been realigned with the default folder structure of the Angular CLI.
That's a step along the road to basing the sample in the Angular CLI.
But it's also good in its own right. 
It helps clearly separate app code from setup and configuration files.

所有的文档范例都已经向Angular CLI的默认文件夹结构看齐了。
这是把范例迁移到Angular CLI过程中的一步。
不过也不仅是为了迁移，它确实能帮我们把应用代码从环境代码和配置代码中分离出来。

All samples now have a `src/` folder at the project root.
The former `app/` folder moves under `src/`. 
Read about moving your existing project to this structure in 
<a href="https://github.com/angular/quickstart#updating-to-a-newer-version-of-the-quickstart-repo" target="_blank" target="Migrating samples/quickstart app to the src folder">
the QuickStart repo update instructions</a>.

我们已经把所有范例改成了使用项目根目录下的`src/`文件夹。
也就是把以前的`app/`文件夹移到了`src/`文件夹下面。
要了解如何对你的现有工程进行这种迁移，请参阅<a href="https://github.com/angular/quickstart#updating-to-a-newer-version-of-the-quickstart-repo" target="_blank" target="把范例中的应用迁移到src文件夹">QuickStart中的迁移指南</a>。

Notably:

要点：

* `app/main.ts` moved to `src/main.ts`.

    把`app/main.ts`移到`src/main.ts`。

* `app/` moved to `src/app/`.
    
    把`app/`移到`src/app/`。
    
* `index.html`, `styles.css` and `tsconfig.json` moved inside `src/`.

    把`index.html`、`styles.css`和`tsconfig.json`移到`src/`中。

* `systemjs.config.js` now imports `main.js` instead of `app`.

    `systemjs.config.js`现在要导入`main.js`而不是`app`。

* Added `lite-server` configuration (`bs-config.json`) to serve `src/`.

    新增了一个`lite-server`配置(`bs-config.json`)以便在`src/`下启动开发服务器。

## NEW: Reactive Forms guide (2017-01-31)

## 新增：响应式（Reactive）表单指南 (2017-01-31)

The new [**Reactive Forms**](guide/reactive-forms) guide explains how and why to build a "reactive form".
"Reactive Forms" are the code-based counterpart to the declarative "Template Driven" forms approach
introduced in the [Forms](guide/forms) guide.
Check it out before you decide how to add forms to your app. 
Remember also that you can use both techniques in the same app, 
choosing the approach that best fits each scenario.

新的[**响应式表单**](guide/reactive-forms)指南解释了如何以及何时构建“响应式表单”。
“响应式表单”是基于代码的表单构建方式，与[表单](guide/forms)中介绍的声明“模板驱动”表单的方法相对。
在你决定如何往应用中添加表单之前，建议先读读那一章。
同时，别忘了你可以在同一个应用中同时使用这两种技术，根据场景来选择最合适的方法。

## NEW: Deployment guide (2017-01-30)

## 新增：部署指南 (2017-01-30)

The new [Deployment](guide/deployment) guide describes techniques for putting your application on a server.
It includes important advice on optimizing for production.

新的[部署指南](guide/deployment)讲的是如何把应用放到服务器上。
其中包括了为生产环境进行优化的重要建议。

## Hierarchical Dependency Injection: refreshed (2017-01-13)

## 多级依赖注入：更新完毕 (2017-01-13)

[Hierarchical Dependency Injection](guide/hierarchical-dependency-injection) guide is significantly revised.
Closes issue #3086.
Revised samples are clearer and cover all topics discussed

[多级依赖注入](guide/hierarchical-dependency-injection)做了显著修改。关闭了issue #3086。修改过的范例更加清晰，而且覆盖了讨论到的全部主题。

## Miscellaneous (2017-01-05)

## 杂项 (2017-01-05)

* [Setup](guide/setup) guide: 
    added (optional) instructions on how to remove _non-essential_ files. 
    
    [环境搭建](guide/setup)指南:
    添加了（可选的）步骤说明，告诉你如何移除*非核心*文件。

* No longer consolidate RxJS operator imports in `rxjs-extensions` file; each file should import what it needs.
    
    不再在`rxjs-extensions`文件中统一导入RxJS的操作符，每个文件应该各自导入它自己所需的。

* All samples prepend template/style URLs with `./` as a best practice.

    所有范例都在模板/样式的URL之前添加`./`前缀 …… 而且你在实际开发中也应该这么做。

* [Style Guide](guide/style-guide): copy edits and revised rules.

    [风格指南](guide/style-guide)：复制了编辑过的和修改过的规则。

## Router: more detail (2016-12-21)

## 路由：更详细 (2016-12-21)

Added more information to the [Router](guide/router) guide 
including sections named outlets, wildcard routes, and preload strategies.

往[路由指南](guide/router)中添加了更多信息，包括“命名出口（Outlet）”、通配符路由和预加载策略。

## HTTP: how to set default request headers (and other request options) (2016-12-14)

## Http：如何设置默认的请求头（以及其它配置项） (2016-12-14)

Added section on how to set default request headers (and other request options) to 
[HTTP](guide/server-communication#override-default-request-options) guide.

往[Http指南](guide/server-communication#override-default-request-options)中添加了一节“如何设置默认的请求头（以及其它配置项）”

## Testing: added component test plunkers (2016-12-02)

## 测试：添加了组件测试的plunker范例 (2016-12-02)

Added two plunkers that each test _one simple component_ so you can write a component test plunker of your own: <live-example name="setup" plnkr="quickstart-specs">one</live-example> for the QuickStart seed's `AppComponent` and <live-example name="testing" plnkr="banner-specs">another</live-example> for the Testing guide's `BannerComponent`. 
Linked to these plunkers in [Testing](guide/testing#live-examples) and [Setup anatomy](guide/setup-systemjs-anatomy) guides.

添加了两个plunker例子，每个都测试一个简单的组件，以便你可以自己在plunker中写组件测试：<live-example name="setup" plnkr="quickstart-specs">一个</live-example>用于测试快速起步中的`AppComponent`，<live-example name="testing" plnkr="banner-specs">另一个</live-example>用于测试“测试”章节的`BannerComponent`。
并在[测试](guide/testing#live-examples)和[环境设置剖析](guide/setup-systemjs-anatomy)中链接到它们。

## Internationalization: pluralization and _select_ (2016-11-30)

## 国际化：单复数和`select` (2016-11-30)  

The [Internationalization (i18n)](cookbook/i18n) guide explains how to handle pluralization and 
translation of alternative texts with `select`.
The sample demonstrates these features too.

[国际化 (i18n)](guide/i18n)解释了如何处理单复数问题，和如何使用`select`来翻译候选内容。
例子中也演示了这些特性。

## Testing: karma file updates (2016-11-30)

## 测试：更新了karma文件 (2016-11-30)

* `karma.config` + `karma-test-shim` can handle multiple spec source paths;
see quickstart issue: [angular/quickstart#294](https://github.com/angular/quickstart/issues/294).
  
    `karma.config` + `karma-test-shim`可以处理多个测试源文件路径了，参见[angular/quickstart#294](https://github.com/angular/quickstart/issues/294)。

* Displays Jasmine Runner output in the karma-launched browser.

    在启动了karma的浏览器中显示Jasmine的输出。

## QuickStart Rewrite (2016-11-18)

## 全新《快速起步》 (2016-11-18)

The QuickStart is completely rewritten so that it actually is quick.
It references a minimal "Hello Angular" app running in Plunker.
The new [Setup](guide/setup) page tells you how to install a local development environment
by downloading (or cloning) the QuickStart github repository.
You are no longer asked to copy-and-paste code into setup files that were not explained anyway.

完全重写了《快速起步》，变得更加快速。
它使用了在 Plunker 中运行的最小化的 “Hello Angular” 应用。
新添加的[搭建本地开发环境](guide/setup)页面解释了如何通过下载或者克隆 QuickStart github 库来安装本地开发环境。
你将不再需要拷贝粘贴代码到一些并没有对其解释的配置文件中。

## Sync with Angular v.2.2.0 (2016-11-14)

## 与Angular v.2.2.0同步(2016-11-14)  

Docs and code samples updated and tested with Angular v.2.2.0 .

使用Angular v.2.2.0更新和测试所有文档和代码例子。

## UPDATE: NgUpgrade Guide for the AOT friendly _upgrade/static_ module (2016-11-14)

## 更新：用于AoT的_upgrade/static_模块NgUpgrade指南 (2016-11-14)  

The updated [NgUpgrade Guide](guide/upgrade) guide covers the 
new AOT friendly `upgrade/static` module 
released in v.2.2.0, which is the recommended
facility for migrating from AngularJS to Angular.
The documentation for the version prior to v.2.2.0 has been removed.

更新的[NgUpgrade指南](guide/upgrade)覆盖在v.2.2.0发布的AoT`upgrade/static`模块，
是从AngularJS升级至Angular的推荐工具。
删除早于v.2.2.0版本的文档。

## ES6  described in "TypeScript to JavaScript" (2016-11-14)

## 在“从TypeScript到JavaScript”增加ES6的描述 (2016-11-14)  

The updated [TypeScript to JavaScript](cookbook/ts-to-js) cookbook 
now explains how to write apps in ES6/7

更新了“[从TypeScript到JavaScript](cookbook/ts-to-js)”烹饪宝典，解释如何使用ES6/7编写应用

by translating the common idioms in the TypeScript documentation examples
(and elsewhere on the web) to ES6/7 and ES5.

将TypeScript文档示例中（以及网站其它地方）的习惯用法翻译成ES6/7和ES5。

## Sync with Angular v.2.1.1 (2016-10-21)

## 与Angular v.2.1.1 同步(2016-10-21)  

Docs and code samples updated and tested with Angular v.2.1.1. 

使用Angular v.2.1.1更新和测试所有文档和代码例子。

## npm _@types_ packages replace _typings_ (2016-10-20)

## 使用npm的_@types_包替换_typings_ (2016-10-20)

Documentation samples now get TypeScript type information for 3rd party libraries
from npm `@types` packages rather than with the _typings_ tooling.
The `typings.json` file is gone.

文档例子现在从npm的`@types`第三方库获取TypeScript类型信息，不再使用_typings_。
删除`typings.json`文件。

The [AngularJS Upgrade](guide/upgrade) guide reflects this change.
The `package.json` installs `@types/angular` and several `@types/angular-...`
packages in support of upgrade; these are not needed for pure Angular development.

"[从AngularJS升级](guide/upgrade)"指南反映了这个变化。
`package.json`安装`@types/angular`和一些`@types/angular-...`包来支持升级。它们在纯Angular开发中是不需要的。

## "Template Syntax" explains two-way data binding syntax (2016-10-20)

## "模板语法"添加了双向数据绑定语法的解释(2016-10-20)

Demonstrates how to two-way data bind to a custom Angular component and
re-explains `[(ngModel)]` in terms of the basic `[()]` syntax.

展示了如何在自定义Angular组件中双向数据绑定，用基础`[()]`重新解释`[(ngModel)]`。

## BREAKING CHANGE: `in-memory-web-api` (v.0.1.11) delivered as esm umd (2016-10-19)

## 破坏性变化：`in-memory-web-api` (v.0.1.11) 以esm umd的形式发布 (2016-10-19)

This change supports ES6 developers and aligns better with typical Angular libraries.
It does not affect the module's API but it does affect how you load and import it.
See the <a href="https://github.com/angular/in-memory-web-api/blob/master/CHANGELOG.md#0113-2016-10-20" target="_blank">change note</a>
in the `in-memory-web-api` repo.

这个变化支持ES6开发者，并与典型的Angular库看齐。
它不会影响模块的API，但是它改变了加载和导入它的方式。
参见`in-memory-web-api`库的<a href="https://github.com/angular/in-memory-web-api/blob/master/CHANGELOG.md#0113-2016-10-20" target="_blank">变更记录</a>。

## "Router" _preload_ syntax and _:enter_/_:leave_ animations (2016-10-19)

## "路由器"_预加载_语法和_:enter_/_:leave_动画(2016-10-19)

The router can lazily _preload_ modules _after_ the app starts and
_before_ the user navigates to them for improved perceived performance.

路由器可以在应用启动_之后_和用户导航到惰性加载模块_之前_，预先加载惰性模块，以增强性能。

New `:enter` and `:leave` aliases make animation more natural.

新`:enter`和`:leave`语法，让动画更加自然。

## Sync with Angular v.2.1.0 (2016-10-12)

## 与Angular v.2.1.0同步(2016-10-12)  

Docs and code samples updated and tested with Angular v.2.1.0 .

使用Angular v.2.1.0更新和测试所有文档和代码例子。

## NEW "Ahead of time (AOT) Compilation" cookbook (2016-10-11)

## 添加了新的“预编译(AoT)"烹饪书(2016-10-11)

The NEW [Ahead of time (AOT) Compilation](cookbook/aot-compiler) cookbook
explains what AOT compilation is and why you'd want it.
It demonstrates the basics with a QuickStart app
followed by the more advanced considerations of compiling and bundling the Tour of Heroes.

全新[预编译(AoT)](cookbook/aot-compiler)烹饪书介绍了什么是AoT编译和为何你需要它。
它以**快速起步**应用程序开始讲解，接着介绍了编译和构建**英雄指南**的更高级的注意事项。

## Sync with Angular v.2.0.2 (2016-10-6)

## 与Angular v.2.0.2同步 (2016-10-6)  

Docs and code samples updated and tested with Angular v.2.0.2 .

使用Angular v.2.0.2更新和测试所有文档和代码例子。

## "Routing and Navigation" guide with the _Router Module_ (2016-10-5)

## 在“路由和导航”向导中添加**路由模块** (2016-10-5)

The [Routing and Navigation](guide/router) guide now locates route configuration
in a _Routing Module_. 
The _Routing Module_ replaces the previous _routing object_ involving the `ModuleWithProviders`.

[Routing and Navigation](guide/router)现在在**路由模块**中设置路由配置。
**路由模块**替换之前的**路由对象**，使用了`ModuleWithProviders`。

[Routing and Navigation](guide/router)

[路由与导航](guide/router)

All guided samples with routing use the _Routing Module_ and prose content has been updated,
most conspicuously in the 
[NgModule](guide/ngmodule) guide and [NgModule FAQ](cookbook/ngmodule-faq) cookbook.

所有使用路由的例子都使用**路由模块**，相关内容也被更新。更新最多的是[Angular模块（NgModule）](guide/ngmodule)章和[Angular模块常见问题](cookbook/ngmodule-faq)烹饪书。

## New "Internationalization" Cookbook (2016-09-30)

## 全新“国际化”烹饪书(2016-09-30)

Added a new [Internationalization (i18n)](cookbook/i18n) cookbook that shows how
to use Angular "i18n" facilities to translate template text into multiple languages.

添加了新的[国际化(i18n)](cookbook/i18n)烹饪书，展示了如何使用Angular的“i18n”工具来讲模板文本翻译到多种语言。

## "angular-in-memory-web-api" package rename (2016-09-27)

## 重命名“angular-in-memory-web-api”包(2016-09-27)

Many samples use the `angular-in-memory-web-api` to simulate a remote server.
This library is also useful to you during early development before you have a server to talk to.

许多例子使用了`angular-in-memory-web-api`来模拟远程服务器。
这个库在你拥有服务器之前的早期开发阶段也很有用。

The package name was changed from "angular2-in-memory-web-api" which is still frozen-in-time on npm.
The new "angular-in-memory-web-api" has new features. 
<a href="https://github.com/angular/in-memory-web-api/blob/master/README.md" target="_blank">Read about them on github</a>.

这个包的名字从“angular2-in-memory-web-api”（仍然有效，但不再更新了）重新命名了。
新的“angular-in-memory-web-api”有新的功能。
<a href="https://github.com/angular/in-memory-web-api/blob/master/README.md" target="_blank">到github获得更多详情</a>.

## "Style Guide" with _NgModules_ (2016-09-27)

## “风格指南”中添加了_NgModules_(2016-09-27)

[StyleGuide](guide/style-guide) explains recommended conventions for Angular modules (NgModule).

[StyleGuide](guide/style-guide)解释了我们为Angular模块（NgModule）而推荐的约定。

Barrels now are far less useful and have been removed from the style guide;
they remain valuable but are not a matter of Angular style.
Also relaxed the rule that discouraged use of the `@Component.host` property.

现在，封装桶不再那么重要，风格指南已经移除了它们。
它们仍然很有价值，但是它们与Angular风格无关。
我们同时对**不推荐使用`@Component.host`属性**的规则有所放宽。

## _moduleId: module.id_ everywhere (2016-09-25)

## moduleId：到处添加module.id(2016-09-25)

Sample components that get their templates or styles with `templateUrl` or `styleUrls`
have been converted to _module-relative_ URLs.
Added the `moduleId: module.id` property-and-value to their `@Component` metadata.

在所有使用`templateUrl`或者`styleUrls`来获取模板或样式的例子组件都被转换为**相对模块**的URL。
我们添加了`moduleId: module.id`到它们的`@Component`元数据。

This change is a requirement for compilation with AOT compiler when the app loads
modules with SystemJS as the samples currently do.

当应用像例子当前使用的方法一样 - 使用SystemJS加载模块时，本更新是AoT编译器的前提条件。

## "Lifecycle Hooks" guide simplified (2016-09-24)

## 简化了“生命周期钩子”章(2016-09-24)

The [Lifecycle Hooks](guide/lifecycle-hooks) guide is shorter, simpler, and
draws more attention to the order in which Angular calls the hooks.

[生命周期钩子](guide/lifecycle-hooks)章现在更加简短，并且对强调了Angular是以什么顺序来调用钩子方法的。