re: "saving an instance of the service" - Sure, you could do that.
In essence that is typically how state is shared between different views,
since the class is a singleton.
But I thought you wanted the AppComponent to be made aware of a change in
one of the sub-components.
Good luck with your exams!
On Friday, January 15, 2016 at 10:19:10 AM UTC-5, Alfred Feldmeyer wrote:
>
> Wow, at first: Thx very much for your help!
>
> Interesting approach, but I don't see, why a event should be necessary.
> Why not saving the event-data directly in the service class and make an
> instance of the service-Class available in the AppComponent view? (I
> haven't tried, not sure if it would work)
>
> Im pretty busy until Monday (exams), but as soon as I can I will test your
> suggestion.
>
> Thank you for your response. You really helped me!
>
> Am Freitag, 15. Januar 2016 14:38:42 UTC+1 schrieb michael corbridge:
>>
>> Follow up:
>>
>> I created an a component that will be called (instantiated?) by the
>> angular2 router mechanism. Then I created a service based on Stream using
>> the pattern described in www.syntaxsuccess.com. In the ngOnInit of that
>> component, I used that Stream to emit an object. In this case I had
>> created a MessageVO object to emit. In my app.component.ts, which is in
>> essence the 'Router' you describe in your diagram, I subsribe to that
>> message Stream. Now, whenever the component is instantiated via the
>> router, ngOnInit is called, and the Router (AppComponent) reacts to that
>> event. Wow! How cool is that!
>> --------------------------
>> MessageEmitter.ts------------------------------------
>>
>> import {Subject } from 'rxjs/Subject';
>> import {MessageVO} from '../vo/MessageVO';
>>
>> export class MessageEmitter extends Subject<MessageVO>{
>>
>> constructor() {
>> super();
>> }
>>
>> emit(value:MessageVO) {
>> console.log('>>> emit messageVO from MessageEmitter');
>> console.log(value);
>> super.next(value);
>> }
>> }
>>
>> --------------------------
>> MessageService.ts------------------------------------
>>
>> import {MessageEmitter} from '../emitters/MessageEmitter';
>>
>> export class MessageService{
>>
>> Stream:MessageEmitter;
>>
>> constructor(){
>> this.Stream = new MessageEmitter();
>> }
>> }
>>
>> --------------------------
>> HomeComponent.ts------------------------------------
>>
>> import {Component} from 'angular2/core';
>> import {MessageVO} from '../vo/MessageVO';
>> import {MessageService} from '../common/messageService';
>>
>> @Component({
>> selector: 'home',
>> templateUrl: 'app/home/home.component.html'
>> })
>> export class HomeComponent {
>>
>> title: string = 'Home Page';
>> body: string = 'This is the about home body';
>> message: string;
>>
>> constructor(private messageService:MessageService) { }
>>
>> ngOnInit() {
>> this.sendMessage();
>> }
>>
>>
>> sendMessage(){
>> var messageVO:MessageVO = new MessageVO();
>> messageVO.subject = 'message from the robot overlord';
>>
>> messageVO.content = 'you must all obey!';
>>
>> messageVO.date = 'January 15, 2016';
>> messageVO.isRead = false;
>>
>> this.messageService.Stream.emit(messageVO);
>> }
>> }
>>
>> --------------------------
>> app.component.ts------------------------------------
>>
>> import {Component} from 'angular2/core';
>> import {RouteConfig, ROUTER_DIRECTIVES} from 'angular2/router';
>> import {HomeComponent} from './home/home.component';
>> import {MessageService} from './common/message.service';
>> import {MessageVO} from './vo/MessageVO';
>>
>> @Component({
>> selector: 'app',
>> templateUrl: 'app/app.component.html',
>> directives: [ ROUTER_DIRECTIVES ],
>> providers: [MessageService]
>> })
>>
>> @RouteConfig([
>> {path:'/home', name: 'Home', component:HomeComponent, useAsDefault:true}
>> ])
>>
>> export class AppComponent {
>>
>> constructor(private messageService:MessageService){
>> messageService.Stream.subscribe(message => this.processMessage(message));
>> }
>>
>> processMessage(messageVO:MessageVO){
>> console.log(' >>>>>> messageVO from app.component.ts');
>> console.log(messageVO);
>> }
>>
>> }
>>
>>
>> I assume you know how to put the views together, so I didn't include that
>> part. I will create a plunker. I know that they really don't want us
>> filling the posts full of code.
>>
>>
>>
>> On Friday, January 15, 2016 at 3:31:30 AM UTC-5, Alfred Feldmeyer wrote:
>>>
>>> Hey together,
>>>
>>> I have following situation:
>>>
>>>
>>> <https://lh3.googleusercontent.com/-jJsbqhMxjGU/Vpg6SPuqEmI/AAAAAAAAEBY/VtWqDSBGdy0/s1600/Zeichnung1.png>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> *I simply want to give a string into the Router from the active child
>>> component.*
>>>
>>> I was looking for an event bubbeling solution, where e.g. ComponentA
>>> emits an event in a OnInit hook method and AppComponent is listening for it.
>>>
>>> Also I tried to access the active component through the Router and the
>>> Location object.
>>>
>>> I am stuck!
>>>
>>> The only way I found was:
>>> http://plnkr.co/edit/0hrHdO14sHy3LNVWpuiZ?p=preview
>>> But it looks not like the intended way.
>>>
>>> Could somebody please help me. Any help/link is welcome.
>>>
>>
--
You received this message because you are subscribed to the Google Groups
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.