refactor(compiler): use the new compiler everywhere

Closes #3605

BREAKING CHANGE:
- we don't mark an element as bound any more if it only contains text bindings
  E.g. <div>{{hello}}</div>
  This changes the indices when using `DebugElement.componentViewChildren` / `DebugElement.children`.
- `@Directive.compileChildren` was removed,
  `ng-non-bindable` is now builtin and not a directive any more
- angular no more adds the `ng-binding` class to elements with bindings
- directives are now ordered as they are listed in the View.directives regarding change detection.
  Previously they had an undefined order.
- the `Renderer` interface has new methods `createProtoView` and `registerComponentTemplate`. See `DomRenderer` for default implementations.
- reprojection with `ng-content` is now all or nothing per `ng-content` element
- angular2 transformer can't be used in tests that modify directive metadata.
  Use `angular2/src/transform/inliner_for_test` transformer instead.
This commit is contained in:
Tobias Bosch
2015-10-01 10:07:49 -07:00
parent 30ca0434a2
commit 76247b7097
124 changed files with 2013 additions and 3451 deletions

View File

@ -161,6 +161,17 @@ void noChangeDetectorTests() {
_formatThenExpectEquals(output, expected);
});
it('should generate getters for Directive#events.', () async {
var inputPath =
'template_compiler/directive_event_files/hello.ng_deps.dart';
var expected = readFile(
'template_compiler/directive_event_files/expected/hello.ng_deps.dart');
var output = await process(new AssetId('a', inputPath));
_formatThenExpectEquals(output, expected);
output = await process(new AssetId('a', inputPath));
_formatThenExpectEquals(output, expected);
});
// TODO(kegluenq): Before committing, should this test be removed or just
// modified to check something different, maybe the created template code?
xit('should generate all expected getters, setters, & methods.', () async {

View File

@ -0,0 +1,20 @@
library examples.hello_world.index_common_dart.ng_deps.dart;
import 'hello.dart';
import 'package:angular2/angular2.dart'
show Component, Directive, View, NgElement;
var _visited = false;
void initReflector(reflector) {
if (_visited) return;
_visited = true;
reflector
..registerType(
HelloDirective,
new ReflectionInfo(const [
const Directive(selector: 'hello', outputs: const ['eventName'])
], const [
const []
], () => new HelloDirective()))
..registerGetters({'eventName': (o) => o.eventName});
}

View File

@ -0,0 +1,19 @@
library examples.hello_world.index_common_dart.ng_deps.dart;
import 'hello.dart';
import 'package:angular2/angular2.dart'
show Component, Directive, View, NgElement;
var _visited = false;
void initReflector(reflector) {
if (_visited) return;
_visited = true;
reflector
..registerType(
HelloDirective,
new ReflectionInfo(const [
const Directive(selector: 'hello', outputs: const ['eventName'])
], const [
const []
], () => new HelloDirective()));
}

View File

@ -0,0 +1,32 @@
{
"HelloCmp":
{
"kind": "type",
"value": {
"isComponent": false,
"dynamicLoadable": true,
"selector":"hello-app",
"exportAs": null,
"type": {
"id": 1,
"name": "HelloCmp",
"moduleUrl": "asset:angular2/test/transform/template_compiler/directive_event_files/hello.dart"
},
"changeDetection": 5,
"properties": {},
"outputs": {"eventName": "eventName"},
"hostListeners": {},
"hostProperties": {},
"hostAttributes": {},
"lifecycleHooks": [],
"template": {
"encapsulation": 0,
"template": "<button>go</button>",
"templateUrl": null,
"styles": null,
"styleUrls": null,
"ngContentSelectors": null
}
}
}
}