Issue 1:
I'm submitting a ... (check one with "x")

[x] bug report => search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question

Current behavior

ngc command fails when "noUnusedParameters" is set in tsconfig.json with '$event' is declared but never used even if $event is not declared anywhere.

Expected behavior

ngc should not fail when "noUnusedParameters" is set in tsconfig.json.

Minimal reproduction of the problem with instructions

Repository with reproduction. Run yarn start (npm start).

What is the motivation / use case for changing the behavior?

Support of "noUnusedParameters" TypeScript setting.

Please tell us about your environment:

Operating system: Windows 10.

Angular version: 4.0.0

Language: [TypeScript 2.2]

Node (for AoT issues): node --version = v7.7.2

Issue 2:
If I have a set of directives that collaborate to get stuff done (e.g DefaultValueAccessor and NgModel) and I include just one of them, I might get very poor error messages about stuff being null.

Example with declaring view dependency on NgModel rather than on FORM_DIRECTIVES results in this:

EXCEPTION: No value accessor for '' in [null]
angular2.min.js:16 EXCEPTION: No value accessor for '' in [null]t.logError @ angular2.min.js:16t.logGroup @ angular2.min.js:16e.call @ angular2.min.js:3(anonymous function) @ angular2.min.js:16e._onError @ angular2.min.js:9t.onError @ angular2.min.js:9n.run @ angular2.min.js:1(anonymous function) @ angular2.min.js:9(anonymous function) @ angular2.min.js:1O @ angular2.min.js:1A @ angular2.min.js:1I @ angular2.min.js:1(anonymous function) @ angular2.min.js:1r @ angular2.min.js:9n.run @ angular2.min.js:1(anonymous function) @ angular2.min.js:9(anonymous function) @ angular2.min.js:1h @ angular2.min.js:1
angular2.min.js:16 ORIGINAL EXCEPTION: No value accessor for ''t.logError @ angular2.min.js:16e.call @ angular2.min.js:3(anonymous function) @ angular2.min.js:16e._onError @ angular2.min.js:9t.onError @ angular2.min.js:9n.run @ angular2.min.js:1(anonymous function) @ angular2.min.js:9(anonymous function) @ angular2.min.js:1O @ angular2.min.js:1A @ angular2.min.js:1I @ angular2.min.js:1(anonymous function) @ angular2.min.js:1r @ angular2.min.js:9n.run @ angular2.min.js:1(anonymous function) @ angular2.min.js:9(anonymous function) @ angular2.min.js:1h @ angular2.min.js:1
angular2.min.js:16 ORIGINAL STACKTRACE:t.logError @ angular2.min.js:16e.call @ angular2.min.js:3(anonymous function) @ angular2.min.js:16e._onError @ angular2.min.js:9t.onError @ angular2.min.js:9n.run @ angular2.min.js:1(anonymous function) @ angular2.min.js:9(anonymous function) @ angular2.min.js:1O @ angular2.min.js:1A @ angular2.min.js:1I @ angular2.min.js:1(anonymous function) @ angular2.min.js:1r @ angular2.min.js:9n.run @ angular2.min.js:1(anonymous function) @ angular2.min.js:9(anonymous function) @ angular2.min.js:1h @ angular2.min.js:1
angular2.min.js:16 Error: No value accessor for ''
at new t (https://code.angularjs.org/2.0.0-alpha.39/angular2.min.js:12:23656)
at o (https://code.angularjs.org/2.0.0-alpha.39/angular2.min.js:21:17177)
at Object.i [as setUpControl] (https://code.angularjs.org/2.0.0-alpha.39/angular2.min.js:21:16718)
at t.onChanges (https://code.angularjs.org/2.0.0-alpha.39/angular2.min.js:10:3971)
at e.ChangeDetector_App_0.detectChangesInRecordsInternal (eval at <anonymous> (https://code.angularjs.org/2.0.0-alpha.39/angular2.min.js:17:11265), <anonymous>:41:57)
at e.detectChangesInRecords (https://code.angularjs.org/2.0.0-alpha.39/angular2.min.js:17:4786)
at e.runDetectChanges (https://code.angularjs.org/2.0.0-alpha.39/angular2.min.js:17:4363)
at e._detectChangesInShadowDomChildren (https://code.angularjs.org/2.0.0-alpha.39/angular2.min.js:17:6205)
at e.runDetectChanges (https://code.angularjs.org/2.0.0-alpha.39/angular2.min.js:17:4476)
at e.detectChanges (https://code.angularjs.org/2.0.0-alpha.39/angular2.min.js:17:4094)

It would be great if we either warned about the missing dependency or included it by default (too much magic?). Maybe just throwing an error saying please import "FORM_DIRECTIVES" would be the best.