diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
index 3c9805e95ad3f..b72a3a45f603a 100644
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -25,7 +25,7 @@ ISSUES MISSING IMPORTANT INFORMATION MAY BE CLOSED WITHOUT INVESTIGATION.
## Minimal reproduction of the problem with instructions
## What is the motivation / use case for changing the behavior?
diff --git a/BUILD.bazel b/BUILD.bazel
index f88b9e1a20151..3ae5672cf0050 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -32,6 +32,7 @@ filegroup(
"reflect-metadata",
"source-map-support",
"minimist",
+ "tslib",
] for ext in [
"*.js",
"*.json",
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 942147fc04cf7..12e4ead348e7a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,16 +1,26 @@
+
+## [5.2.6](https://github.com/angular/angular/compare/5.2.5...5.2.6) (2018-02-22)
+
+### Bug Fixes
+
+* **common:** correct mapping of Observable methods ([#20518](https://github.com/angular/angular/issues/20518)) ([ce5e8fa](https://github.com/angular/angular/commit/ce5e8fa)), closes [#20516](https://github.com/angular/angular/issues/20516)
+* **common:** then and else template might be set to null ([#22298](https://github.com/angular/angular/issues/22298)) ([af6a056](https://github.com/angular/angular/commit/af6a056))
+* **compiler-cli:** add missing entry point to package, update tsickle ([#22295](https://github.com/angular/angular/issues/22295)) ([c5418c7](https://github.com/angular/angular/commit/c5418c7))
+* **core:** properly handle function without prototype in reflector ([#22284](https://github.com/angular/angular/issues/22284)) ([5ec38f2](https://github.com/angular/angular/commit/5ec38f2)), closes [#19978](https://github.com/angular/angular/issues/19978)
+* **core:** support metadata reflection for native class types ([#22356](https://github.com/angular/angular/issues/22356)) ([ee91de9](https://github.com/angular/angular/commit/ee91de9)), closes [#21731](https://github.com/angular/angular/issues/21731)
+
## [5.2.5](https://github.com/angular/angular/compare/5.2.4...5.2.5) (2018-02-14)
-
### Bug Fixes
-(https://github.com/angular/angular/commit/15ff7ba)), closes [#21377](https://github.com/angular/angular/issues/21377)
+* **aio:** update Firebase redirects and SW routes ([#21763](https://github.com/angular/angular/pull/21763)) ([#22104](https://github.com/angular/angular/pull/22104)) ([15ff7ba](https://github.com/angular/angular/commit/15ff7ba)), closes [#21377](https://github.com/angular/angular/issues/21377)
* **bazel:** allow TS to read ambient typings ([#21876](https://github.com/angular/angular/issues/21876)) ([d57fd0b](https://github.com/angular/angular/commit/d57fd0b)), closes [#21872](https://github.com/angular/angular/issues/21872)
* **bazel:** improve error message for missing assets ([#22096](https://github.com/angular/angular/issues/22096)) ([c5ec8d9](https://github.com/angular/angular/commit/c5ec8d9)), closes [#22095](https://github.com/angular/angular/issues/22095)
* **common:** weaken AsyncPipe transform signature ([#22169](https://github.com/angular/angular/issues/22169)) ([c6bdc83](https://github.com/angular/angular/commit/c6bdc83))
* **compiler:** make unary plus operator consistent to JavaScript ([#22154](https://github.com/angular/angular/issues/22154)) ([1b8ea10](https://github.com/angular/angular/commit/1b8ea10)), closes [#22089](https://github.com/angular/angular/issues/22089)
* **core:** add stacktrace in log when error during cleanup component in TestBed ([#22162](https://github.com/angular/angular/issues/22162)) ([c4f841f](https://github.com/angular/angular/commit/c4f841f))
-* **core:** ensure initial value of QueryList length ([#21980](https://github.com/angular/angular/issues/21980)) ([#21982](https://github.com/angular/angular/issues/21982)) ([47b73fd](https://github.com/angular/angular/commit/47b73fd)), closes [/github.com/angular/angular/commit/e54474215629aa6a0e0497fe61bfc896cea532c9#diff-a85dbe0991a7577ea24b49374e9ae90](https://github.com//github.com/angular/angular/commit/e54474215629aa6a0e0497fe61bfc896cea532c9/issues/diff-a85dbe0991a7577ea24b49374e9ae90)
+* **core:** ensure initial value of QueryList length ([#21980](https://github.com/angular/angular/issues/21980)) ([#21982](https://github.com/angular/angular/issues/21982)) ([47b73fd](https://github.com/angular/angular/commit/47b73fd)), closes [#21980](https://github.com/angular/angular/issues/21980)
* **core:** use appropriate inert document strategy for Firefox & Safari ([#17019](https://github.com/angular/angular/issues/17019)) ([47b71d9](https://github.com/angular/angular/commit/47b71d9))
* **forms:** prevent event emission on enable/disable when emitEvent is false ([#12366](https://github.com/angular/angular/issues/12366)) ([#21018](https://github.com/angular/angular/issues/21018)) ([56b9591](https://github.com/angular/angular/commit/56b9591))
* **language-service:** correct instructions to install the language service ([#22000](https://github.com/angular/angular/issues/22000)) ([0b23573](https://github.com/angular/angular/commit/0b23573))
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index a7d31ec7d4458..74cec311bc107 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -51,7 +51,7 @@ and help you to craft the change so that it is successfully accepted into the pr
Before you submit an issue, please search the issue tracker, maybe an issue for your problem already exists and the discussion might inform you of workarounds readily available.
-We want to fix all the issues as soon as possible, but before fixing a bug we need to reproduce and confirm it. In order to reproduce bugs we will systematically ask you to provide a minimal reproduction scenario using http://plnkr.co. Having a live, reproducible scenario gives us wealth of important information without going back & forth to you with additional questions like:
+We want to fix all the issues as soon as possible, but before fixing a bug we need to reproduce and confirm it. In order to reproduce bugs, we will systematically ask you to provide a minimal reproduction scenario using http://plnkr.co. Having a live, reproducible scenario gives us a wealth of important information without going back & forth to you with additional questions like:
- version of Angular used
- 3rd-party libraries and their versions
@@ -61,7 +61,7 @@ A minimal reproduce scenario using http://plnkr.co/ allows us to quickly confirm
We will be insisting on a minimal reproduce scenario in order to save maintainers time and ultimately be able to fix more bugs. Interestingly, from our experience users often find coding problems themselves while preparing a minimal plunk. We understand that sometimes it might be hard to extract essentials bits of code from a larger code-base but we really need to isolate the problem before we can fix it.
-Unfortunately we are not able to investigate / fix bugs without a minimal reproduction, so if we don't hear back from you we are going to close an issue that don't have enough info to be reproduced.
+Unfortunately, we are not able to investigate / fix bugs without a minimal reproduction, so if we don't hear back from you we are going to close an issue that doesn't have enough info to be reproduced.
You can file new issues by filling out our [new issue form](https://github.com/angular/angular/issues/new).
@@ -173,12 +173,12 @@ The **header** is mandatory and the **scope** of the header is optional.
Any line of the commit message cannot be longer 100 characters! This allows the message to be easier
to read on GitHub as well as in various git tools.
-Footer should contain a [closing reference to an issue](https://help.github.com/articles/closing-issues-via-commit-messages/) if any.
+The footer should contain a [closing reference to an issue](https://help.github.com/articles/closing-issues-via-commit-messages/) if any.
Samples: (even more [samples](https://github.com/angular/angular/commits/master))
```
-docs(changelog): update change log to beta.5
+docs(changelog): update changelog to beta.5
```
```
fix(release): need to depend on latest rxjs and zone.js
@@ -203,7 +203,7 @@ Must be one of the following:
* **test**: Adding missing tests or correcting existing tests
### Scope
-The scope should be the name of the npm package affected (as perceived by person reading changelog generated from commit messages.
+The scope should be the name of the npm package affected (as perceived by the person reading the changelog generated from commit messages.
The following is the list of supported scopes:
@@ -232,10 +232,10 @@ There are currently a few exceptions to the "use package name" rule:
* none/empty string: useful for `style`, `test` and `refactor` changes that are done across all packages (e.g. `style: add missing semicolons`)
### Subject
-The subject contains succinct description of the change:
+The subject contains a succinct description of the change:
* use the imperative, present tense: "change" not "changed" nor "changes"
-* don't capitalize first letter
+* don't capitalize the first letter
* no dot (.) at the end
### Body
@@ -266,7 +266,7 @@ changes to be accepted, the CLA must be signed. It's a quick process, we promise
* https://help.github.com/articles/setting-your-commit-email-address-in-git/
* https://stackoverflow.com/questions/37245303/what-does-usera-committed-with-userb-13-days-ago-on-github-mean
* https://help.github.com/articles/about-commit-email-addresses/
- * https://help.github.com/articles/blocking-command-line-pushes-that-expose-your-personal-email-address/
+ * https://help.github.com/articles/blocking-command-line-pushes-that-expose-your-personal-email-address/
Note that if you have more than one Git identity, it is important to verify that you are logged in with the same ID with which you signed the CLA, before you commit changes. If not, your PR will fail the CLA check.
diff --git a/WORKSPACE b/WORKSPACE
index 1beda0c030532..57ce53f7c9e6d 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -1,11 +1,14 @@
workspace(name = "angular")
-load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
+# Using a pre-release snapshot to pick up a commit that makes all nodejs_binary
+# programs produce source-mapped stack traces.
+RULES_NODEJS_VERSION = "926349cea4cd360afcd5647ccdd09d2d2fb471aa"
-git_repository(
+http_archive(
name = "build_bazel_rules_nodejs",
- remote = "https://github.com/bazelbuild/rules_nodejs.git",
- commit = "230d39a391226f51c03448f91eb61370e2e58c42",
+ url = "https://github.com/bazelbuild/rules_nodejs/archive/%s.zip" % RULES_NODEJS_VERSION,
+ strip_prefix = "rules_nodejs-%s" % RULES_NODEJS_VERSION,
+ sha256 = "5ba3c8c209078c2e3f0c6aa4abd01a1a561f92a5bfda04e25604af5f4734d69d",
)
load("@build_bazel_rules_nodejs//:defs.bzl", "check_bazel_version", "node_repositories")
@@ -13,10 +16,13 @@ load("@build_bazel_rules_nodejs//:defs.bzl", "check_bazel_version", "node_reposi
check_bazel_version("0.9.0")
node_repositories(package_json = ["//:package.json"])
-git_repository(
+RULES_TYPESCRIPT_VERSION = "0.10.1"
+
+http_archive(
name = "build_bazel_rules_typescript",
- remote = "https://github.com/bazelbuild/rules_typescript.git",
- commit = "d3ad16d1f105e2490859da9ad528ba4c45991d09"
+ url = "https://github.com/bazelbuild/rules_typescript/archive/%s.zip" % RULES_TYPESCRIPT_VERSION,
+ strip_prefix = "rules_typescript-%s" % RULES_TYPESCRIPT_VERSION,
+ sha256 = "a2c81776a4a492ff9f878f9705639f5647bef345f7f3e1da09c9eeb8dec80485",
)
load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace")
diff --git a/aio/content/examples/toh-pt5/src/app/messages/messages.component.html b/aio/content/examples/toh-pt5/src/app/messages/messages.component.html
index 1df7dfd98967f..8e86f5247da43 100644
--- a/aio/content/examples/toh-pt5/src/app/messages/messages.component.html
+++ b/aio/content/examples/toh-pt5/src/app/messages/messages.component.html
@@ -3,6 +3,6 @@
Binds the presence of CSS classes on the element to the truthiness of the associated map values. The right-hand expression should return {class-name: true/false} map.
Allows you to assign styles to an HTML element using CSS. You can use CSS directly, as in the first example, or you can call a method from the component.
+
+
diff --git a/aio/content/guide/glossary.md b/aio/content/guide/glossary.md
index c3c4ee206b1ef..7aca78b128766 100644
--- a/aio/content/guide/glossary.md
+++ b/aio/content/guide/glossary.md
@@ -512,10 +512,6 @@ You rarely access Angular feature modules directly. You usually import them from
## NgModule
-
-
-
-
Helps you organize an application into cohesive blocks of functionality.
An NgModule identifies the components, directives, and pipes that the application uses along with the list of external NgModules that the application needs, such as `FormsModule`.
@@ -526,7 +522,7 @@ For details and examples, see [NgModules](guide/ngmodules) and the
related files in that section.
-
+
{@a O}
@@ -631,13 +627,10 @@ For more information, see the [Routing & Navigation](guide/router) page.
## Router module
-
-
A separate [NgModule](guide/glossary#ngmodule) that provides the necessary service providers and directives for navigating through application views.
For more information, see the [Routing & Navigation](guide/router) page.
-
## Routing component
diff --git a/aio/content/guide/lifecycle-hooks.md b/aio/content/guide/lifecycle-hooks.md
index 273d3c0ed33ba..7ca063e6c7e9d 100644
--- a/aio/content/guide/lifecycle-hooks.md
+++ b/aio/content/guide/lifecycle-hooks.md
@@ -8,7 +8,7 @@ checks it when its data-bound properties change, and destroys it before removing
Angular offers **lifecycle hooks**
that provide visibility into these key life moments and the ability to act when they occur.
-A directive has the same set of lifecycle hooks, minus the hooks that are specific to component content and views.
+A directive has the same set of lifecycle hooks.
{@a hooks-overview}
@@ -25,7 +25,7 @@ that Angular calls shortly after creating the component:
-No directive or component will implement all of the lifecycle hooks and some of the hooks only make sense for components.
+No directive or component will implement all of the lifecycle hooks.
Angular only calls a directive/component hook method *if it is defined*.
{@a hooks-purpose-timing}
@@ -86,12 +86,10 @@ calls the lifecycle hook methods in the following sequence at specific moments:
- Respond after Angular projects external content into the component's view.
+ Respond after Angular projects external content into the component's view / the view that a directive is in.
Called _once_ after the first `ngDoCheck()`.
- _A component-only hook_.
-
@@ -100,12 +98,10 @@ calls the lifecycle hook methods in the following sequence at specific moments:
- Respond after Angular checks the content projected into the component.
+ Respond after Angular checks the content projected into the directive/component.
Called after the `ngAfterContentInit()` and every subsequent `ngDoCheck()`.
- _A component-only hook_.
-
@@ -114,12 +110,10 @@ calls the lifecycle hook methods in the following sequence at specific moments:
- Respond after Angular initializes the component's views and child views.
+ Respond after Angular initializes the component's views and child views / the view that a directive is in.
Called _once_ after the first `ngAfterContentChecked()`.
- _A component-only hook_.
-
@@ -128,12 +122,10 @@ calls the lifecycle hook methods in the following sequence at specific moments:
- Respond after Angular checks the component's views and child views.
+ Respond after Angular checks the component's views and child views / the view that a directive is in.
Called after the `ngAfterViewInit` and every subsequent `ngAfterContentChecked()`.
- _A component-only hook_.
-
diff --git a/aio/content/guide/reactive-forms.md b/aio/content/guide/reactive-forms.md
index 65d4705c4f134..d6194c9e61af6 100644
--- a/aio/content/guide/reactive-forms.md
+++ b/aio/content/guide/reactive-forms.md
@@ -418,7 +418,7 @@ To see the form model, add the following line after the
closing `form` tag in the `hero-detail.component.html`:
-
+
diff --git a/aio/content/images/marketing/home/ng-conf.png b/aio/content/images/marketing/home/ng-conf.png
new file mode 100644
index 0000000000000..16d8a273e3a5f
Binary files /dev/null and b/aio/content/images/marketing/home/ng-conf.png differ
diff --git a/aio/content/marketing/announcements.json b/aio/content/marketing/announcements.json
index 32d44b8220af2..bd74d0f86b8fc 100644
--- a/aio/content/marketing/announcements.json
+++ b/aio/content/marketing/announcements.json
@@ -1,9 +1,9 @@
[
{
- "startDate": "2018-01-01",
- "endDate": "2018-02-02",
- "message": "Join us in Atlanta for ngATL Jan 30 - Feb 2, 2018",
- "imageUrl": "generated/images/marketing/home/ng-atl.png",
- "linkUrl": "http://ng-atl.org/"
+ "startDate": "2018-02-14",
+ "endDate": "2018-04-22",
+ "message": "Join us for ng-conf Apr 18th-20th, 2018",
+ "imageUrl": "generated/images/marketing/home/ng-conf.png",
+ "linkUrl": "http://ng-conf.org/"
}
-]
\ No newline at end of file
+]
diff --git a/aio/content/marketing/features.html b/aio/content/marketing/features.html
index f37cadd10e4b4..da2e88309813f 100755
--- a/aio/content/marketing/features.html
+++ b/aio/content/marketing/features.html
@@ -20,7 +20,7 @@
Features & Benefits
Native
-
Build native mobile apps with strategies from Ionic Framework, NativeScript, and React Native.
+
Build native mobile apps with strategies from Cordova, Ionic, or NativeScript.
diff --git a/aio/content/marketing/resources.json b/aio/content/marketing/resources.json
index 5c57a22eab432..2499ae8df29c4 100644
--- a/aio/content/marketing/resources.json
+++ b/aio/content/marketing/resources.json
@@ -247,6 +247,13 @@
"rev": true,
"title": "Angular Playground",
"url": "http://www.angularplayground.it/"
+ },
+ "nx": {
+ "desc": "Nx (Nrwl Extensions for Angular) is an open source toolkit built on top of Angular CLI to help enterprise teams develop Angular at scale.",
+ "rev": true,
+ "title": "Nx",
+ "logo": "https://nrwl.io/assets/nx-logo.png",
+ "url": "https://nrwl.io/nx"
}
}
},
@@ -444,6 +451,13 @@
"rev": true,
"title": "Essential Angular",
"url": "https://gumroad.com/l/essential_angular"
+ },
+ "angular-buch": {
+ "desc": "The first German book about Angular. It gives you a detailed practical overview of the key concepts of the platform. In each chapter a sample application is built upon with a new Angular topic. All sources are available on GitHub.",
+ "logo": "https://angular-buch.com/assets/img/brand.svg",
+ "rev": true,
+ "title": "Angular-Buch (German)",
+ "url": "https://angular-buch.com/"
}
}
},
@@ -488,6 +502,13 @@
"title": "CodeSchool: Accelerating Through Angular",
"url": "https://www.codeschool.com/courses/accelerating-through-angular-2"
},
+ "angular-playbook": {
+ "desc": "Learn advanced Angular best practices for enterprise teams, created by Nrwl.io.",
+ "logo": "https://nrwl.io/assets/logo_footer_2x.png",
+ "rev": true,
+ "title": "Angular Enterprise Playbook",
+ "url": "https://angularplaybook.com"
+ },
"a2b": {
"desc": "Hundreds of Angular courses for all skill levels",
"logo": "",
diff --git a/aio/content/tutorial/toh-pt1.md b/aio/content/tutorial/toh-pt1.md
index e59e918ffe348..0be72e931174b 100644
--- a/aio/content/tutorial/toh-pt1.md
+++ b/aio/content/tutorial/toh-pt1.md
@@ -29,7 +29,7 @@ and annotate the component class with `@Component`.
The CLI generated three metadata properties:
-1. `selector`— the components CSS element selector
+1. `selector`— the component's CSS element selector
1. `templateUrl`— the location of the component's template file.
1. `styleUrls`— the location of the component's private CSS styles.
diff --git a/aio/content/tutorial/toh-pt3.md b/aio/content/tutorial/toh-pt3.md
index 0886ea6aa2c59..8cfd88cfffc08 100644
--- a/aio/content/tutorial/toh-pt3.md
+++ b/aio/content/tutorial/toh-pt3.md
@@ -96,7 +96,7 @@ Bind the `HeroesComponent.selectedHero` to the element's `hero` property like th
`[hero]="selectedHero"` is an Angular [property binding](guide/template-syntax#property-binding).
It's a _one way_ data binding from
-the `selectedHero` property of the `HeroComponent` to the `hero` property of the target element, which maps to the `hero` property of the `HeroDetailComponent`.
+the `selectedHero` property of the `HeroesComponent` to the `hero` property of the target element, which maps to the `hero` property of the `HeroDetailComponent`.
Now when the user clicks a hero in the list, the `selectedHero` changes.
When the `selectedHero` changes, the _property binding_ updates `hero`
diff --git a/aio/src/app/app.component.html b/aio/src/app/app.component.html
index 1a7d457127667..36c355357efbe 100644
--- a/aio/src/app/app.component.html
+++ b/aio/src/app/app.component.html
@@ -4,7 +4,7 @@