<p dir="auto"><strong>I'm submitting a ...</strong>  (check one with "x")</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="[X ] bug report =&gt; search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request =&gt; Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question"><pre class="notranslate"><code class="notranslate">[X ] bug report =&gt; search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request =&gt; Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question
</code></pre></div>
<p dir="auto"><strong>Current behavior</strong></p>

<p dir="auto">Compilation produces the following with strictNullChecks enabled:</p>
<p dir="auto">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.<br>
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.<br>
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.<br>
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.<br>
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.<br>
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.<br>
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.<br>
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.<br>
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.<br>
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.<br>
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.<br>
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.<br>
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.<br>
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.<br>
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.<br>
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.<br>
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.<br>
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.</p>
<p dir="auto"><strong>Expected behavior</strong></p>

<p dir="auto">Compilation should not produce any errors.</p>
<p dir="auto"><strong>Minimal reproduction of the problem with instructions</strong></p>

<p dir="auto"><strong>What is the motivation / use case for changing the behavior?</strong></p>

<p dir="auto"><strong>Please tell us about your environment:</strong></p>

<ul dir="auto">
<li><strong>Angular version:</strong> 4.1.0</li>
</ul>

<ul dir="auto">
<li><strong>Browser:</strong> [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 ]</li>
</ul>

<ul dir="auto">
<li>
<p dir="auto"><strong>Language:</strong> TypeScript 2.2.2</p>
</li>
<li>
<p dir="auto"><strong>Node (for AoT issues):</strong> <code class="notranslate">node --version</code> =   6.10.2</p>
</li>
</ul>
<p dir="auto"><strong>I'm submitting a ...</strong>  (check one with "x")</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="[x] bug report =&gt; search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request =&gt; Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question"><pre class="notranslate"><code class="notranslate">[x] bug report =&gt; search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request =&gt; Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question
</code></pre></div>
<p dir="auto"><strong>Current behavior</strong><br>
Originally we implemented <code class="notranslate">strictNullChecks</code> support by hand-modifying the public api surface and testing apps against that with <code class="notranslate">strictNullChecks</code> 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.</p>
<p dir="auto">Eventually <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mhevery/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mhevery">@mhevery</a> went off to implement this properly by actually making the Angular codebase compile with <code class="notranslate">strictNullChecks</code> on without hand-tweaking the API. This work (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="216243890" data-permission-text="Title is private" data-url="https://github.com/angular/angular/issues/15405" data-hovercard-type="pull_request" data-hovercard-url="/angular/angular/pull/15405/hovercard" href="https://github.com/angular/angular/pull/15405">#15405</a>) surfaced a lot more issues with our public api surface that affects apps that do turn on <code class="notranslate">strictNullChecks</code>.</p>
<p dir="auto">To make matters worse, we realized that if we were to allow apps to turn on <code class="notranslate">strictNullChecks</code> 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 <code class="notranslate">strictNullChecks</code>.</p>
<p dir="auto"><strong>Expected behavior</strong><br>
Correct <code class="notranslate">strictNullChecks</code> support.</p>
<p dir="auto"><strong>Proposed plan</strong></p>
<ul dir="auto">
<li>Prevent applications from turning on <code class="notranslate">strictNullChecks</code> for now via a bogus symbol in our api that fails the strict null check</li>
<li>Release 4.0 without the <code class="notranslate">strictNullChecks</code> support</li>
<li>Merge <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mhevery/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mhevery">@mhevery</a> <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="216243890" data-permission-text="Title is private" data-url="https://github.com/angular/angular/issues/15405" data-hovercard-type="pull_request" data-hovercard-url="/angular/angular/pull/15405/hovercard" href="https://github.com/angular/angular/pull/15405">#15405</a> and any other follow up PRs related to this</li>
<li>Release the <code class="notranslate">strictNullChecks</code> support in 4.1 (due in April, approximately one month from now)</li>
</ul>