When switching routes. How to keep state of the application as it is? I observed that Angular class is reinitialize every time I switch tabs.
For eg. Plunker
import {Component, View, CORE_DIRECTIVES} from 'angular2/angular2'
@Component({
})
@View({
template: `
<input class="form-control" [value]="test"> </input>
<br>
{{test}}
`
})
export class SearchPage{
test = `Type something here go to inventory tab and comeback to search tab. Typed data will gone.
I observed that Angular class is reinitialize every time I switch tabs.`;
}
}
Indeed new component instance are created when navigating. You have several options to hold your value:
this plunker http://plnkr.co/edit/iEUlfrgA3mpaTKmNWRpR?p=preview implements the former one. Important bits are
the service (searchService.ts)
export class SearchService {
searchText: string;
constructor() {
this.searchText = "Initial text";
}
}
Binding it when bootstraping the app, so that the instance is available through the whole app:
bootstrap(App, [
HTTP_BINDINGS,ROUTER_BINDINGS, SearchService,
bind(LocationStrategy).toClass(HashLocationStrategy)
])
.catch(err => console.error(err));
Injecting it in your SearchPage component: (note that you should not override the value in the constructor since a new component instance is created upon navigation)
export class SearchPage{
searchService: SearchService;
constructor(searchService: SearchService) {
this.searchService = searchService;
}
}
Updating the service value on input:
<input class="form-control" [value]="searchService.searchText"
(input)="searchService.searchText = $event.target.value">
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With