<p dir="auto"><strong>I'm submitting a ...</strong></p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="[ ] bug report
[X] feature request
[ ] support request"><pre class="notranslate"><code class="notranslate">[ ] bug report
[X] feature request
[ ] support request
</code></pre></div>
<p dir="auto"><strong>Current behavior</strong><br>
Routes do have only a path and are accessed by this path e.g. <code class="notranslate">&lt;a routerLink="/crisis-center"&gt;Crysis center&lt;/a&gt;</code></p>
<p dir="auto"><strong>Expected behavior</strong><br>
Routes should have a fixed synonym which they can be accessed by.</p>
<p dir="auto"><strong>What is the motivation / use case for changing the behavior?</strong><br>
If we want to change a path we have to search all across our app and change it everywhere. This is not just unhandy, it leads into errors if we forget to change it somewhere. In the real world maybe a stakeholder decides to change a path multiple times in the development.</p>
<p dir="auto"><strong>How other frameworks do it:</strong><br>
I want to show how its done in the PHP framework Symfony. The configuration is in YAML:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="blog_show:
    path:      /blog/{slug}
    defaults:  { _controller: AppBundle:Blog:show }"><pre class="notranslate"><code class="notranslate">blog_show:
    path:      /blog/{slug}
    defaults:  { _controller: AppBundle:Blog:show }
</code></pre></div>
<p dir="auto">Now we have a fixed name <code class="notranslate">blog_list</code> which will probably not change. But we can change the path as we want to and the app still keeps working.</p>
<p dir="auto">To use the link we can generate it with a function:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="$url = $this-&gt;generateUrl(
            'blog_list',
            array('slug' =&gt; 'my-blog-post')
        );"><pre class="notranslate"><code class="notranslate">$url = $this-&gt;generateUrl(
            'blog_list',
            array('slug' =&gt; 'my-blog-post')
        );
</code></pre></div>
<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">On compiling Angular CLI App with "strict": true, flag in tsconfig.json and using ts 2.3. ng server fails with below error:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="ERROR in node_modules/@angular/forms/src/model.d.ts (544,19): Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean |
undefined; } | undefined' has no property 'emitEvent' and no string index signature.

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

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

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

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

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

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

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

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

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

ERROR in node_modules/@angular/forms/src/model.d.ts (770,35): Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean |
undefined; } | undefined' has no property 'emitEvent' and no string index signature."><pre class="notranslate"><code class="notranslate">ERROR in node_modules/@angular/forms/src/model.d.ts (544,19): Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean |
undefined; } | undefined' has no property 'emitEvent' and no string index signature.

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

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

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

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

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

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

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

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

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

ERROR in node_modules/@angular/forms/src/model.d.ts (770,35): Type '{ onlySelf?: boolean | undefined; emitEvent?: boolean |
undefined; } | undefined' has no property 'emitEvent' and no string index signature.
</code></pre></div>
<p dir="auto"><strong>Expected behavior</strong></p>

<p dir="auto">Build should be successful</p>
<p dir="auto"><strong>Minimal reproduction of the problem with instructions</strong></p>

<ul dir="auto">
<li>Install latest angular CLI</li>
<li>Update to latest Typescript</li>
<li><code class="notranslate">"strict": true</code>, flag in tsconfig.json</li>
<li>Build using : <code class="notranslate">ng serve</code></li>
</ul>
<p dir="auto"><strong>What is the motivation / use case for changing the behavior?</strong></p>

<ul dir="auto">
<li>To be able to enable strict checking with latest Typescript</li>
</ul>
<p dir="auto"><strong>Please tell us about your environment:</strong></p>

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

<ul dir="auto">
<li><strong>Browser:</strong> all</li>
</ul>

<ul dir="auto">
<li>
<p dir="auto"><strong>Language:</strong> TypeScript 2.3</p>
</li>
<li>
<p dir="auto"><strong>Node (for AoT issues):</strong> <code class="notranslate">node --version</code> =  7.8</p>
</li>
</ul>