|
| 1 | +<a name="2.0.0-rc.4"></a> |
| 2 | +# [2.0.0-rc.4](https://github.com/angular/angular/compare/2.0.0-rc.3...2.0.0-rc.4) (2016-06-30) |
| 3 | + |
| 4 | + |
| 5 | +### Bug Fixes |
| 6 | + |
| 7 | +* **animations:** ensure void => * animations are triggered when an expression is omitted ([e0b0a59](https://github.com/angular/angular/commit/e0b0a59)), closes [#9327](https://github.com/angular/angular/issues/9327) [#9381](https://github.com/angular/angular/issues/9381) |
| 8 | +* **animations:** make sure the easing value is passed into the web-animations player ([c43aec2](https://github.com/angular/angular/commit/c43aec2)), closes [#9517](https://github.com/angular/angular/issues/9517) [#9523](https://github.com/angular/angular/issues/9523) |
| 9 | +* **common:** add license header to localization.ts ([5150344](https://github.com/angular/angular/commit/5150344)) |
| 10 | +* **common/testing:** remove internal MockLocationStrategy from common/testing ([#9562](https://github.com/angular/angular/issues/9562)) ([dcf7512](https://github.com/angular/angular/commit/dcf7512)) |
| 11 | +* **compiler:** don't inject `viewProviders` into content child elements ([9ed8f2d](https://github.com/angular/angular/commit/9ed8f2d)) |
| 12 | +* **compiler:** make code easier to type check ([51d4c9d](https://github.com/angular/angular/commit/51d4c9d)), closes [#9701](https://github.com/angular/angular/issues/9701) |
| 13 | +* **compiler:** report not existing files as errors ([e81dea6](https://github.com/angular/angular/commit/e81dea6)), closes [#9690](https://github.com/angular/angular/issues/9690) |
| 14 | +* **Compiler:** relax childIsRecursive check ([#8705](https://github.com/angular/angular/issues/8705)) ([3d5bb23](https://github.com/angular/angular/commit/3d5bb23)) |
| 15 | +* **core:** improve error message for broken bindings ([df759b8](https://github.com/angular/angular/commit/df759b8)), closes [#6820](https://github.com/angular/angular/issues/6820) [#9536](https://github.com/angular/angular/issues/9536) |
| 16 | +* **core:** properly report missing providers and viewProviders ([#9411](https://github.com/angular/angular/issues/9411)) ([f114dd3](https://github.com/angular/angular/commit/f114dd3)), closes [#8237](https://github.com/angular/angular/issues/8237) |
| 17 | +* **core:** report duplicate template bindings in templates ([098b461](https://github.com/angular/angular/commit/098b461)), closes [#7315](https://github.com/angular/angular/issues/7315) [#9462](https://github.com/angular/angular/issues/9462) |
| 18 | +* **core/testing:** clean up the core testing public API ([#9466](https://github.com/angular/angular/issues/9466)) ([8a9e9c7](https://github.com/angular/angular/commit/8a9e9c7)) |
| 19 | +* **core/testing:** move ComponentFixture to core ([#9386](https://github.com/angular/angular/issues/9386)) ([1143b03](https://github.com/angular/angular/commit/1143b03)) |
| 20 | +* **core/testing compiler/testing:** move TestComponentBuilder to core/testing ([#9590](https://github.com/angular/angular/issues/9590)) ([a33195d](https://github.com/angular/angular/commit/a33195d)), closes [#9585](https://github.com/angular/angular/issues/9585) |
| 21 | +* **forms:** add select multiple accessor as built-in accessor ([9f00a1b](https://github.com/angular/angular/commit/9f00a1b)) |
| 22 | +* **forms:** async validator-directives process Observables correctly ([#8186](https://github.com/angular/angular/issues/8186)) ([eef9512](https://github.com/angular/angular/commit/eef9512)) |
| 23 | +* **forms:** emit statusChange when child controls have async validator ([#9652](https://github.com/angular/angular/issues/9652)) ([797914e](https://github.com/angular/angular/commit/797914e)) |
| 24 | +* **forms:** make radio button selection logic more flexible ([#9646](https://github.com/angular/angular/issues/9646)) ([ed0ade6](https://github.com/angular/angular/commit/ed0ade6)), closes [#9558](https://github.com/angular/angular/issues/9558) |
| 25 | +* **forms:** ngModel should emit valueChanges and statusChanges asynchronously ([97a2119](https://github.com/angular/angular/commit/97a2119)) |
| 26 | +* **http:** add search param escaping for keys ([#9166](https://github.com/angular/angular/issues/9166)) ([a5f2e20](https://github.com/angular/angular/commit/a5f2e20)) |
| 27 | +* **http:** don't encode values that are allowed in query ([#9651](https://github.com/angular/angular/issues/9651)) ([1620426](https://github.com/angular/angular/commit/1620426)), closes [#9348](https://github.com/angular/angular/issues/9348) |
| 28 | +* **ngc:** correct dependencies for compiler-cli ([826f89f](https://github.com/angular/angular/commit/826f89f)), closes [#9540](https://github.com/angular/angular/issues/9540) |
| 29 | +* **ngc:** work with typescript[@next](https://github.com/next) ([f463e09](https://github.com/angular/angular/commit/f463e09)) |
| 30 | +* **NgSwitch:** display deprecation message only once ([398060d](https://github.com/angular/angular/commit/398060d)) |
| 31 | +* **platform-browser/testing:** clean up public api for platform-browser/testing ([#9519](https://github.com/angular/angular/issues/9519)) ([3d8eb8c](https://github.com/angular/angular/commit/3d8eb8c)) |
| 32 | +* **platform-browser/testing-e2e:** clean up unused exports from e2e testing helpers ([#9387](https://github.com/angular/angular/issues/9387)) ([894747c](https://github.com/angular/angular/commit/894747c)) |
| 33 | +* **public API:** update golden files ([ae4fa56](https://github.com/angular/angular/commit/ae4fa56)) |
| 34 | +* **security:** allow empty CSS values. ([#9675](https://github.com/angular/angular/issues/9675)) ([2d9d7f1](https://github.com/angular/angular/commit/2d9d7f1)) |
| 35 | +* **security:** no warning when sanitizing escaped html ([#9392](https://github.com/angular/angular/issues/9392)) ([#9413](https://github.com/angular/angular/issues/9413)) ([98cef76](https://github.com/angular/angular/commit/98cef76)) |
| 36 | +* **testing:** remove the `toMatchPattern` matcher (jasmine has `toMatch`) ([6420f75](https://github.com/angular/angular/commit/6420f75)) |
| 37 | +* public api surface fixes + stability markers ([24eb838](https://github.com/angular/angular/commit/24eb838)), closes [#9236](https://github.com/angular/angular/issues/9236) [#9235](https://github.com/angular/angular/issues/9235) |
| 38 | +* support *directive on `<template>` ([#9691](https://github.com/angular/angular/issues/9691)) ([3fec279](https://github.com/angular/angular/commit/3fec279)), closes [#7315](https://github.com/angular/angular/issues/7315) |
| 39 | +* **testing:** remove the `toThrowErrorWith` matcher (jasmine has `toThrowError`) ([e1e5c40](https://github.com/angular/angular/commit/e1e5c40)) |
| 40 | +* **typings:** don't test compiler-cli typings on TS 1.8 ([54dbed4](https://github.com/angular/angular/commit/54dbed4)) |
| 41 | +* **upgrade:** add peerDependency on platform-browser-dynamic ([#9674](https://github.com/angular/angular/issues/9674)) ([e2116c5](https://github.com/angular/angular/commit/e2116c5)), closes [#9623](https://github.com/angular/angular/issues/9623) |
| 42 | + |
| 43 | + |
| 44 | +### Features |
| 45 | + |
| 46 | +* **compiler:** support sync runtime compile ([bf598d6](https://github.com/angular/angular/commit/bf598d6)), closes [#7084](https://github.com/angular/angular/issues/7084) [#9594](https://github.com/angular/angular/issues/9594) |
| 47 | +* **core:** add `[@Component](https://github.com/Component).precompile` and `ComponentFactoryResolver` ([6c5b653](https://github.com/angular/angular/commit/6c5b653)), closes [#9543](https://github.com/angular/angular/issues/9543) |
| 48 | +* **core:** split ChangeDetectorStrategy into ChangeDetectionStrategy and ChangeDetectorStatus ([e12b127](https://github.com/angular/angular/commit/e12b127)) |
| 49 | +* **DomRenderer:** Adding support for document fragments in SVG foreign objects ([#9458](https://github.com/angular/angular/issues/9458)) ([3644eef](https://github.com/angular/angular/commit/3644eef)) |
| 50 | +* **forms:** add support for formArrayName ([c03e1f2](https://github.com/angular/angular/commit/c03e1f2)), closes [#9251](https://github.com/angular/angular/issues/9251) |
| 51 | +* **forms:** add support for standalone ngModel dirs inside forms ([6edf047](https://github.com/angular/angular/commit/6edf047)), closes [#9230](https://github.com/angular/angular/issues/9230) |
| 52 | +* **forms:** expose ValidatorFn and AsyncValidatorFn ([17dcbf6](https://github.com/angular/angular/commit/17dcbf6)), closes [#8834](https://github.com/angular/angular/issues/8834) |
| 53 | +* **forms:** make valueChanges and statusChanges available on abstract control directives ([de12710](https://github.com/angular/angular/commit/de12710)) |
| 54 | +* **forms:** support updating of validators on exiting controls ([#9516](https://github.com/angular/angular/issues/9516)) ([638fd74](https://github.com/angular/angular/commit/638fd74)) |
| 55 | +* **forms:** use formControlName on radio buttons when name is absent ([#9681](https://github.com/angular/angular/issues/9681)) ([0961bd1](https://github.com/angular/angular/commit/0961bd1)) |
| 56 | +* **QueryList:** implement some() ([#9464](https://github.com/angular/angular/issues/9464)) ([f6a410a](https://github.com/angular/angular/commit/f6a410a)), closes [#9443](https://github.com/angular/angular/issues/9443) |
| 57 | +* **router:** add pathMatch property to replace terminal ([fcfddbf](https://github.com/angular/angular/commit/fcfddbf)) |
| 58 | +* **router:** implement data and resolve ([f2f1ec0](https://github.com/angular/angular/commit/f2f1ec0)) |
| 59 | +* **router:** use componentFactoryResolver ([dc64e90](https://github.com/angular/angular/commit/dc64e90)) |
| 60 | +* **security:** allow more HTML5 elements and attributes in sanitizers ([6605eb3](https://github.com/angular/angular/commit/6605eb3)), closes [#9438](https://github.com/angular/angular/issues/9438) |
| 61 | + |
| 62 | + |
| 63 | +### BREAKING CHANGES |
| 64 | + |
| 65 | +* http: The changes to Http's URLSearchParams serialization now |
| 66 | + prevent encoding of these characters inside query parameters |
| 67 | + which were previously converted to percent-encoded values `@ : $ , ; + ; ? /` |
| 68 | + |
| 69 | + The default encoding behavior can be overridden by extending |
| 70 | + QueryEncoder, as documented in the URLSearchParams service. |
| 71 | +* Previously multiple template bindings on one element |
| 72 | + (ex. `<div *ngIf='..' *ngFor='...'>`) were allowed but most of the time |
| 73 | + were leading to undesired result. It is possible that a small number |
| 74 | + of applications will see template parse errors that should be fixed by |
| 75 | + nesting elements or using `<template>` tags explicitly. |
| 76 | +* DomEventsPlugin and KeyEventsPlugin previously exported from core are no longer public - these classes are implementation detail. |
| 77 | + |
| 78 | + Previously deprecated BROWSER_PROVIDERS was completely removed from platform-browser. |
| 79 | +* core/testing compiler/testing: `TestComponentBuilder` is now imported from `@angular/core/testing`. Imports |
| 80 | + from `@angular/compiler/testing` are deprecated. |
| 81 | + |
| 82 | + Before: |
| 83 | + |
| 84 | + ``` |
| 85 | + import {TestComponentBuilder, TestComponentRenderer, ComponentFixtureAutoDetect} from '@angular/compiler/testing'; |
| 86 | + ``` |
| 87 | + |
| 88 | + After: |
| 89 | + ``` |
| 90 | + import {TestComponentBuilder, TestComponentRenderer, ComponentFixtureAutoDetect} from '@angular/core/testing'; |
| 91 | + ``` |
| 92 | +* common/testing: MockLocationStrategy was intended to be internal only and is now removed |
| 93 | + from the `@angular/common/testing` public api. |
| 94 | + |
| 95 | + Use `SpyLocation` from `@angular/common/testing` for location testing. |
| 96 | +* compiler: `TestComponentBuilder.createSync` now takes a component type |
| 97 | + and throws if not all templates are either inlined |
| 98 | + are compiled before via `createAsync`. |
| 99 | +* core/testing: Remove the following APIs from `@angular/core/testing`, which have been deprecated or were |
| 100 | + never intended to be publicly exported: |
| 101 | + |
| 102 | + ``` |
| 103 | + injectAsync |
| 104 | + clearPendingTimers |
| 105 | + Log |
| 106 | + MockAppliacationHref |
| 107 | + MockNgZone |
| 108 | + clearPendingTimers |
| 109 | + getTypeOf |
| 110 | + instantiateType |
| 111 | + ``` |
| 112 | + |
| 113 | + Instead of `injectAsync`, use `async(inject())`. |
| 114 | + |
| 115 | + `clearPendingTimers` is no longer required. |
| 116 | +* platform-browser/testing: The following are no longer publicly exported APIs. They were intended as internal |
| 117 | + utilities and you should use your own util: |
| 118 | + |
| 119 | + ``` |
| 120 | + browserDetection, |
| 121 | + dispatchEvent, |
| 122 | + el, |
| 123 | + normalizeCSS, |
| 124 | + stringifyElement, |
| 125 | + expect (and custom matchers for Jasmine) |
| 126 | + ``` |
| 127 | +* testing: Before: |
| 128 | + |
| 129 | + expect(...).toThrowErrorWith(msg); |
| 130 | + |
| 131 | + After: |
| 132 | + |
| 133 | + expect(...).toThrowError(msg); |
| 134 | + * testing: Before: |
| 135 | + |
| 136 | + expect(...).toMatchPattern(pattern); |
| 137 | + |
| 138 | + After: |
| 139 | + |
| 140 | + expect(...).toMatch(pattern); |
| 141 | +* core/testing: `ComponentFixture` will be moving out of `@angular/compiler/testing` to `@angular/core/testing` in |
| 142 | + this release. For now, it is deprecated from `@angular/compiler/testing`. |
| 143 | + |
| 144 | + |
| 145 | +* The async function now determines whether it should return a promise |
| 146 | + or instead call a done function parameter. Importing Jasmine functions |
| 147 | + from `@angular/core/testing` is no longer necessary and is now deprecated. |
| 148 | + |
| 149 | + Additionally, beforeEachProviders is also deprecated, as it is specific |
| 150 | + to the testing framework. Instead, use the new addProviders method directly. |
| 151 | + |
| 152 | + Before: |
| 153 | + ```js |
| 154 | + import {beforeEachProviders, it, describe, inject} from '@angular/testing/core'; |
| 155 | + |
| 156 | + describe('my code', () => { |
| 157 | + beforeEachProviders(() => [MyService]); |
| 158 | + |
| 159 | + it('does stuff', inject([MyService], (service) => { |
| 160 | + // actual test |
| 161 | + }); |
| 162 | + }); |
| 163 | + ``` |
| 164 | +
|
| 165 | + After: |
| 166 | + ```js |
| 167 | + import {addProviders, inject} from '@angular/testing/core'; |
| 168 | + |
| 169 | + describe('my code', () => { |
| 170 | + beforeEach(() => { |
| 171 | + addProviders([MyService]); |
| 172 | + }); |
| 173 | + |
| 174 | + it('does stuff', inject([MyService], (service) => { |
| 175 | + // actual test |
| 176 | + }); |
| 177 | + }); |
| 178 | + ``` |
| 179 | +
|
1 | 180 | <a name="2.0.0-rc.3"></a> |
2 | 181 | # 2.0.0-rc.3 (2016-06-21) |
3 | 182 |
|
|
0 commit comments