angular-redux / store

Angular 2+ bindings for Redux
MIT License
1.34k stars 202 forks source link

@select decorate returns incorrect object #531

Closed iGitScor closed 6 years ago

iGitScor commented 6 years ago

This is a...

What toolchain are you using for transpilation/bundling?

Environment

NodeJS Version: 6.9.5 Typescript Version: 2.7.1 Angular Version: 5.0.3 @angular-redux/store version: 7.1.1 @angular/cli version: (if applicable) OS: Mac OS

Link to repo showing the issus

(optional, but helps a lot)

Expected Behaviour:

Get the store value with @select decorator

Actual Behaviour:

Get verbose object content

{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"operator":{}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"operator":{}},"operator":{}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"operator":{}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"operator":{}},"operator":{}},"operator":{}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"operator":{}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"operator":{}},"operator":{}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"operator":{}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"operator":{}},"operator":{}},"operator":{}},"operator":{}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"operator":{}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"operator":{}},"operator":{}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"operator":{}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"operator":{}},"operator":{}},"operator":{}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"operator":{}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"operator":{}},"operator":{}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"operator":{}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"destination":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"source":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":{"_isScalar":false}},"operator":{}},"operator":{}},"operator":{}},"operator":{}},"operator":{}}

Stack Trace/Error Message:

Additional Notes:

(optional)

export interface IAppState {
  action: string;
  completed: boolean;
  scan: IScan;
}

I tried

wtho commented 6 years ago

At first glance the verbose object content looks like an Observable, exactly what @select is going to create on the field.

The first definition @select() public completed$: Observable<boolean>; is correct, angular-redux will place an Observable on completed.

completed will not become the store boolean value, but @select will instantiate a RxJS Observable, which you can e. g. subscribe to:

this.completed$.subscribe(val => console.log('value changed', val));

or which you can use in templates using the async pipe:

<p>Completed is: {{ completed$ | async }}</p>
<my-fancy-component [completed]="completed$ | async"></my-fancy-component>

If you are not familiar with RxJS Observables I recommend you to go through the RxJS introduction (v5). If you have more difficulties with Observables, please prefer using Q&A platforms like stackoverflow over the GitHub issue tracker, as it is mainly meant for bugs or feature requests, not for basic usage help requests.

Please close the issue if this helped you.

iGitScor commented 6 years ago

Thank you