<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="[ ] bug report =&gt; search github for a similar issue or PR before submitting
[x] 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">[ ] bug report =&gt; search github for a similar issue or PR before submitting
[x] 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>
We can use <code class="notranslate">ChangeDetectionStrategy</code>  <code class="notranslate">onPush</code> to set components to  <code class="notranslate">checkOnce</code>, but there is no way to set one <code class="notranslate">@Input</code> to <code class="notranslate">checkOnce</code> without changing others.</p>
<p dir="auto"><strong>Expected behavior</strong><br>
Could we add a way to set one <code class="notranslate">@Input</code> to <code class="notranslate">checkOnce</code> without changing others?</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">There is no angularjs double colon expression equivalent in current angular version. It will be more convenient for the developer to have this feature in angular.</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="In a angularjs, when we declare a value such as `{{ ::foo }}` inside the DOM, once this value 

becomes defined, Angularjs will render it, unbind it from the watchers and thus reduce the 

volume of bindings inside the $digest loop. "><pre class="notranslate"><code class="notranslate">In a angularjs, when we declare a value such as `{{ ::foo }}` inside the DOM, once this value 

becomes defined, Angularjs will render it, unbind it from the watchers and thus reduce the 

volume of bindings inside the $digest loop. 
</code></pre></div>
<p dir="auto"><strong>Please tell us about your environment:</strong><br>
null</p>
<ul dir="auto">
<li>
<p dir="auto"><strong>Angular version:</strong> 2.0.X<br>
4.1.2</p>
</li>
<li>
<p dir="auto"><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 ]<br>
all</p>
</li>
<li>
<p dir="auto"><strong>Language:</strong> [all | TypeScript X.X | ES6/7 | ES5]<br>
all</p>
</li>
<li>
<p dir="auto"><strong>Node (for AoT issues):</strong> <code class="notranslate">node --version</code> =<br>
7</p>
</li>
</ul>
<p dir="auto">Changes to newly created Components with DynamicComponentLoader are not detected.</p>
<p dir="auto">Angular Version alpha.33</p>
<p dir="auto">An easy example you can find here:</p>
<p dir="auto">index.ts</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="bootstrap(App).then((appRef:ApplicationRef)=&gt;{
    var appComp:Promise&lt;App&gt; = appRef.injector.get(App);
    appComp.then((app) =&gt;{
        app.createLoginView();
    });
}).catch((e)=&gt;{console.log(e)});"><pre class="notranslate"><code class="notranslate">bootstrap(App).then((appRef:ApplicationRef)=&gt;{
    var appComp:Promise&lt;App&gt; = appRef.injector.get(App);
    appComp.then((app) =&gt;{
        app.createLoginView();
    });
}).catch((e)=&gt;{console.log(e)});
</code></pre></div>
<p dir="auto">app.html</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;div&gt;
    &lt;div #main&gt;{{msg}}&lt;/div&gt;
&lt;/div&gt;"><pre class="notranslate"><code class="notranslate">&lt;div&gt;
    &lt;div #main&gt;{{msg}}&lt;/div&gt;
&lt;/div&gt;
</code></pre></div>
<p dir="auto">app.ts</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="@Component({
    selector: 'app',
    injectables: [DynamicComponentLoader, Injector, ElementRef]
})
@View({
    templateUrl: 'src/component/app/app.html',
    styleUrls: ['src/component/app/app.css']
})
export class App {

    componentLoader:DynamicComponentLoader;
    injector:Injector;
    elementRef:ElementRef;
    msg:string = &quot;Foo&quot;;

    constructor(loader:DynamicComponentLoader, injector:Injector, elementRef:ElementRef) {
        this.componentLoader = loader;
        this.injector = injector;
        this.elementRef = elementRef;
    }

    createLoginView():void {
        this.componentLoader.loadIntoLocation(Login, this.elementRef, &quot;main&quot;).then(componentRef=&gt; {
            this.msg = &quot;Bar&quot;;
        }).catch(e=&gt;console.log(e));
    }
}"><pre class="notranslate"><code class="notranslate">@Component({
    selector: 'app',
    injectables: [DynamicComponentLoader, Injector, ElementRef]
})
@View({
    templateUrl: 'src/component/app/app.html',
    styleUrls: ['src/component/app/app.css']
})
export class App {

    componentLoader:DynamicComponentLoader;
    injector:Injector;
    elementRef:ElementRef;
    msg:string = "Foo";

    constructor(loader:DynamicComponentLoader, injector:Injector, elementRef:ElementRef) {
        this.componentLoader = loader;
        this.injector = injector;
        this.elementRef = elementRef;
    }

    createLoginView():void {
        this.componentLoader.loadIntoLocation(Login, this.elementRef, "main").then(componentRef=&gt; {
            this.msg = "Bar";
        }).catch(e=&gt;console.log(e));
    }
}
</code></pre></div>
<p dir="auto">The provided "Bar" string is not loaded to the app.html and "Foo" is still displayed (Change was not detected). As soon the first event is triggered by any component, the "Bar" msg will shows up. It seems to be an issue within:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="        this.componentLoader.loadIntoLocation(Login, this.elementRef, &quot;main&quot;).then(componentRef=&gt; {
            this.msg = &quot;Bar&quot;;
        }).catch(e=&gt;console.log(e));"><pre class="notranslate"><code class="notranslate">        this.componentLoader.loadIntoLocation(Login, this.elementRef, "main").then(componentRef=&gt; {
            this.msg = "Bar";
        }).catch(e=&gt;console.log(e));
</code></pre></div>
<p dir="auto">If I call createLoginView() from the App constructor and not from the bootstrap Promise, the app.html displays the correct "Bar" msg.</p>
<p dir="auto">Is there something I'm doing wrong? Thx</p>