NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
DEPRECATED - please use angular (without the 2)
Last release 9 years ago
no release in 18 months
Release timing varies
gaps range from 1 weeks to 4 months
Nearly every release is documented
notes for 7 of 7 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
84 releases · first in 2015
Using dart:mirrors (i.e. running AngularDart without code generation) is now formally deprecated. In 4.0+ code generation will be the only way to run…
Exposed TouchFunction and ChangeFunction typedefs to make the transition
to strong-mode easier for teams relying on these function definitions. We
might remove them in a future release when they are no longer needed.
Added a flag to use an experimental new compiler that uses the Dart analyzer
to gather metadata information. This flag will be turned on by default in
4.0:
transformers:
angular2/transform/codegen:
use_analyzer: true
WARNING: Using use_analyzer: true requires discontinuing use of the
platform_* options, and fails-fast if both flags are used. See
https://goo.gl/68VhMa for details.
WARNING: Using use_analyser: true doesn't yet work with most third-party
packages due to a bug.
dart:mirrors (i.e. running AngularDart without code generation) is
now formally deprecated. In 4.0+ code generation will be the only way to
run an AngularDart application, even in development mode. Please ensure you
are using our transformer: https://goo.gl/rRHqO7.CSS errors are now just warnings, and can be ignored. This is due to using a CSS parser for encapsulation - and the AngularDart transformer aggressively runs on all CSS files in a given package. We hope to make this smoother in a future release.
Do not generate throwOnChanges checks outside of dev-mode.
interpolate is now represented by multiple functions (faster).KeyValueDiffer (NgClass, NgStyle) optimized for initial add/removals.One column per quarter.
DEPRECATED See the angular package (without the '2').
Nothing published for this version
Nothing published for this version
Removed NgPlural, deprecated as of 2.1.0.
composeValidators and composeAsyncValidators now part of the public API.angular2/testing.dart includes a test-only isDebugMode function.AbstractControl.markAsDirty now emits a status change event.Requires at least Dart SDK 1.23.0.
Injecting null is no longer supported.
Remove unused useProperty argument in DI Provider api.
ReflectionCapabilities.isReflectionEnabled renamed to reflectionEnabled.
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, use dart:html:
document.title = 'My title';
DynamicComponentLoader now has a simplified API:
loadAsRoot, loadAsRootIntoNode replaced by a single load method that
always creates the component root node instead of hoisting into an existing
node.
Removed viewBindings from Component. This has been interchangeable with
viewProviders for a while now.
BEFORE: dart @Component(viewBindings: const [])
AFTER: dart @Component(viewProviders: const [])
Removed EventManager from the public API. Code generation is now closer to
document.addEventListener and having this interception layer would not
allow further optimizations.
Removed IterableDifferFactory and KeyValueDifferFactory from the public
API. We have planned compiler optimizations that will no longer allow
overriding our diffing implementations. Looking into alternatives before a
final 3.0.0 release that are lower cost.
ASYNC_VALIDATORS can no longer return a Stream instance, only Future.
The experimental NgTestBed was removed. Use package:angular_test now.
By default, the ExceptionHandler is a BrowserExceptionHandler, which
prints exceptions to the console. If you don't want this behavior (i.e.
releasing to production), make sure to override it.
ElementRef.nativeElement is now final (no setter).
DOM adapter is now completely removed from the API and generated code
A name parameter is now required for all @Pipe(...) definitions:
BEFORE: dart @Pipe(name: 'uppercase')
AFTER: dart @Pipe('uppercase')
DomEventsPlugin now requires a strongly typed interface to dart:html.
Null is 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 of SimpleChange.
Instead, check whether previousValue is null.
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, because clickHandler is null during initialization.
@Component(
selector: 'my-component',
template: '<div (click)="clickHandler($event)"></div>')
class MyComponent {
Function clickHandler;
}
Removed Component.moduleId, which was unused.
@View will be removed in 4.0, only use @Component instead.EventEmitter is now @Deprecated: Use Stream and StreamController.ngSwitchCase replaces ngSwitchWhen (soft deprecation).XHR is deprecated, along with the runtime/reflective compiler.IterableDiffers and KeyValueDiffers are 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.<ng-content select="..."> does not emit incorrect code (regression).ngSwitchWhen now properly compares identity in Dartium.Component/Directive#selector is now a @required property.ngIf now throws again if the bound value changes during change detection.AppView<...>.Pipes..template.dart file.NgControl, valueAccessor no longer can throw an NPEstrong-mode analysis within the project, and fixed some errors.<T> generic type syntax for methods, not /*<T>*/.NgZoneImpl, all the code exists in NgZone now.AppView..template.dart change detected primitives are typed.renderType as a static class member in generated code.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Using @ViewQuery|Children|Content| in a constructor is no longer valid. This caused significant extra code to need to be generated for a case that is
@ViewQuery|Children|Content| in a constructor is no longer valid.
This caused significant extra code to need to be generated for a case that
is relatively rare. Code can safely be moved into a setter in most cases.BEFORE
class MyComponent {
QueryList<ChildComponent> _childComponents;
MyComponent(@ContentChildren(ChildComponent) this._childComponents);
}
AFTER
class MyComponent {
QueryList<ChildComponent> _childComponents;
@ContentChildren(ChildComponent)
set childComponents(QueryList<ChildComponent> childComponents) {
_childComponents = childComponents;
}
}
angular2/reflection.dart now works properly.Introduced angular2/reflection.dart as canonical way to opt-in to mirrors. In 2.2.0 it will be considered deprecated to enable runtime reflection by a…
angular2/reflection.dart as canonical way to opt-in to mirrors.
In 2.2.0 it will be considered deprecated to enable runtime reflection by
any other means.NgControlStatus no longer included in COMMON_DIRECTIVES and in FORM_DIRECTIVES. Needs to be manually included in your bootstrap or migrated off of
NgControlStatus no longer included in COMMON_DIRECTIVES and in
FORM_DIRECTIVES. Needs to be manually included in your bootstrap or
migrated off of@Query in a component constructor; move to field-levelRenderer: Use dart:html directlyNgControlStatus: A form control should set class they are interested inNgPlural: Was never formally supported in Angular Dart. Recommend using
package:intl with getters on your @Component pointing to an
Intl.message call until we have formal template support (planned)ObservableListDiff: Not properly implemented, will re-introduce laterInjectorModule - was never formally supportedInjectorModule code (from TS-transpiler era)ExceptionHandler not being called during change detectionImplemented NgTestBed to improve test infrastructure goo.gl/NAXXlN.
POTENTIALLY BREAKING Observable features new use the new observable package, instead of observe.
observable
package, instead of observe.Renderer.createViewRoot.pkg/build..analysis_options to enforce a number of style rules.Deprecated unused ROUTER_LINK_DSL_TRANSFORM.
Our push towards better performance has started showing results in this release. This update provides 5-10% speedup in components. >20% reduction in Dart code size emitted from compiler.
Added ngBeforeSubmit event to ngForm API to allow better validation.
Fix the Math facade (improper annotation): @Deprecated(description).
Mark Binding and bind() as deprecated. Replaced by Provider and provide().
This is the first release of Angular 2 for Dart that is written directly in Dart, instead of generated from TypeScript.
The Provider constructor and provide() function are now more intuitive
when they have a single argument.
Before, const Provider(Foo) or provide(Foo)
would provide a null object.
To provide a Foo object, you had to use const Provider(Foo, useClass:Foo)
or provide(Foo, useClass:Foo).
Now you can omit the useClass:Foo.
Either of the following provides a Foo instance:
const Provider(Foo)
// or
provide(Foo)
If you want the old behavior, change your code to specify useValue:
const Provider(Foo, useValue: null)
// or
provide(Foo, useValue: null)
el.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →