3.0.0: Update changelog for v3 gold
New features
composeValidatorsandcomposeAsyncValidatorsnow part of the public API.angular2/testing.dartincludes a test-onlyisDebugModefunction.- (Forms)
AbstractControl.markAsDirtynow emits a status change event.
Breaking changes
-
Requires at least Dart SDK
1.23.0. -
Injecting
nullis no longer supported. -
Remove unused
usePropertyargument in DIProviderapi. -
ReflectionCapabilities.isReflectionEnabledrenamed toreflectionEnabled. -
Malformed CSS warnings are errors now.
-
Removed forms async validators. Alternative:
control.valueChange((value) { rpc.validate(change).then((errors) { if (errors != null) control.setErrors(errors); }); });
-
Removed
TitleService. To update the title, usedart:html:document.title = 'My title';
-
DynamicComponentLoadernow has a simplified API:loadAsRoot,loadAsRootIntoNodereplaced by a singleloadmethod that
always creates the component root node instead of hoisting into an existing
node. -
Removed
viewBindingsfromComponent. This has been interchangeable with
viewProvidersfor a while now.BEFORE:
dart @Component(viewBindings: const [])AFTER:
dart @Component(viewProviders: const []) -
Removed
EventManagerfrom the public API. Code generation is now closer to
document.addEventListenerand having this interception layer would not
allow further optimizations. -
Removed
IterableDifferFactoryandKeyValueDifferFactoryfrom the public
API. We have planned compiler optimizations that will no longer allow
overriding our diffing implementations. Looking into alternatives before a
final3.0.0release that are lower cost. -
ASYNC_VALIDATORScan no longer return aStreaminstance, onlyFuture. -
The experimental
NgTestBedwas removed. Usepackage:angular_testnow. -
By default, the
ExceptionHandleris aBrowserExceptionHandler, which
prints exceptions to the console. If you don't want this behavior (i.e.
releasing to production), make sure to override it. -
ElementRef.nativeElementis nowfinal(no setter). -
DOM adapter is now completely removed from the API and generated code
-
A
nameparameter is now required for all@Pipe(...)definitions:BEFORE:
dart @Pipe(name: 'uppercase')AFTER:
dart @Pipe('uppercase') -
DomEventsPluginnow requires a strongly typed interface todart:html. -
Nullis no longer propagated as an initial change value. Code should be
updated to either deliver a different initial value or components with an
@Input()should have an appropriate default value.BEFORE
<my-component [value]="null"></my-component> ... String _value; set value(String value) { _value = value ?? 'Default name'; }
AFTER
String _value = 'Default name'; set value(String value) { _value = value; }
-
Removed the
isFirstChange()method ofSimpleChange.
Instead, check whetherpreviousValueisnull. -
Removed
NgPlural, deprecated as of 2.1.0. -
Removed
ObservableListDiffFactory, deprecated as of 2.1.0. -
Event handlers are bound at initialization time. Therefore, the following
will no longer work, becauseclickHandlerisnullduring initialization.@Component( selector: 'my-component', template: '<div (click)="clickHandler($event)"></div>') class MyComponent { Function clickHandler; }
-
Removed
Component.moduleId, which was unused.
Deprecations
@Viewwill be removed in4.0, only use@Componentinstead.EventEmitteris now@Deprecated: UseStreamandStreamController.ngSwitchCasereplacesngSwitchWhen(soft deprecation).XHRis deprecated, along with the runtime/reflective compiler.IterableDiffersandKeyValueDiffersare deprecated. The cost of looking
up to see if a custom differ is available is too high for almost no use.
Before they're removed, we'll have other customization options.
Bug fixes
- Updated various documentation to make cleaner and use Dart, not TS, samples.
- Perf: Added performance improvements around generated code and type inference.
- Fix: Key-value differ now detects removals when first key moves.
- Fix:
<ng-content select="...">does not emit incorrect code (regression). - Perf: Optimized how reflective providers are resolved on application startup.
ngSwitchWhennow properly compares identity in Dartium.Component/Directive#selectoris now a@requiredproperty.- Angular warns in the console if using Dartium without checked mode.
- Various performance improvements for both code size and runtime.
- Various Dart idiomatic/style guide updates to the codebase.
ngIfnow throws again if the bound value changes during change detection.- Fixed a bug where the router didn't work on a root path in IE11.
- Fixed generated code that caused a strong-mode warning on
AppView<...>. - Fixed a bug where DDC didn't work properly with "pure"
Pipes. - Some simple types are now propagated to the generated
.template.dartfile. - When setting up a new
NgControl,valueAccessorno longer can throw an NPE - Re-enabled
strong-modeanalysis within the project, and fixed some errors.
Refactoring
- We now use the formal
<T>generic type syntax for methods, not/*<T>*/. - Removed
NgZoneImpl, all the code exists inNgZonenow. - We now generate specific code for view and content children (faster).
- Projectable nodes now use the visitor pattern in
AppView. - In generated
.template.dartchange detected primitives are typed. - Moved
renderTypeas a static class member in generated code.