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

Compilation produces the following with strictNullChecks enabled:

node_modules/@angular/forms/src/model.d.ts(374,27): error TS2459: Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; emitModelToViewChange?: boolea...' has no property 'onlySelf' and no string index signature.

node_modules/@angular/forms/src/model.d.ts(374,37): error TS2459: Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; emitModelToViewChange?: boolea...' has no property 'emitEvent' and no string index signature.

node_modules/@angular/forms/src/model.d.ts(374,48): error TS2459: Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; emitModelToViewChange?: boolea...' has no property 'emitModelToViewChange' and no string index signature.

node_modules/@angular/forms/src/model.d.ts(374,71): error TS2459: Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; emitModelToViewChange?: boolea...' has no property 'emitViewToModelChange' and no string index signature.

node_modules/@angular/forms/src/model.d.ts(421,29): error TS2459: Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined' has no property 'onlySelf' and no string index signature.

node_modules/@angular/forms/src/model.d.ts(421,39): error TS2459: Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined' has no property 'emitEvent' and no string index signature.

node_modules/@angular/forms/src/model.d.ts(544,9): error TS2459: Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined' has no property 'onlySelf' and no string index signature.

node_modules/@angular/forms/src/model.d.ts(544,19): error TS2459: Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined' has no property 'emitEvent' and no string index signature.

node_modules/@angular/forms/src/model.d.ts(571,9): error TS2459: Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined' has no property 'onlySelf' and no string index signature.

node_modules/@angular/forms/src/model.d.ts(571,19): error TS2459: Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined' has no property 'emitEvent' and no string index signature.

node_modules/@angular/forms/src/model.d.ts(607,25): error TS2459: Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined' has no property 'onlySelf' and no string index signature.

node_modules/@angular/forms/src/model.d.ts(607,35): error TS2459: Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined' has no property 'emitEvent' and no string index signature.

node_modules/@angular/forms/src/model.d.ts(711,29): error TS2459: Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined' has no property 'onlySelf' and no string index signature.

node_modules/@angular/forms/src/model.d.ts(711,39): error TS2459: Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined' has no property 'emitEvent' and no string index signature.

node_modules/@angular/forms/src/model.d.ts(735,31): error TS2459: Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined' has no property 'onlySelf' and no string index signature.

node_modules/@angular/forms/src/model.d.ts(735,41): error TS2459: Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined' has no property 'emitEvent' and no string index signature.

node_modules/@angular/forms/src/model.d.ts(770,25): error TS2459: Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined' has no property 'onlySelf' and no string index signature.

node_modules/@angular/forms/src/model.d.ts(770,35): error TS2459: Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined' has no property 'emitEvent' and no string index signature.

Expected behavior

Compilation should not produce any errors.

Minimal reproduction of the problem with instructions

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

Please tell us about your environment:

Angular version: 4.1.0

Browser: [all | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ]

Language: TypeScript 2.2.2

Node (for AoT issues): node --version = 6.10.2

Issue 2:
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

Originally we implemented strictNullChecks support by hand-modifying the public api surface and testing apps against that with strictNullChecks tsc option on. We though we got a good coverage and fixed all the issues, but during the RC we started noticing that we missed quite a few places.

Eventually @mhevery went off to implement this properly by actually making the Angular codebase compile with strictNullChecks on without hand-tweaking the API. This work (#15405) surfaced a lot more issues with our public api surface that affects apps that do turn on strictNullChecks.

To make matters worse, we realized that if we were to allow apps to turn on strictNullChecks with these bugs in our public api surface, we wouldn't be able to fix the issues without breaking the apps that do turn on strictNullChecks.

Expected behavior

Correct strictNullChecks support.

Proposed plan

Prevent applications from turning on strictNullChecks for now via a bogus symbol in our api that fails the strict null check

Release 4.0 without the strictNullChecks support

Merge @mhevery #15405 and any other follow up PRs related to this

Release the strictNullChecks support in 4.1 (due in April, approximately one month from now)