Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/insidewhy/observable-input
angular input properties as observable streams
https://github.com/insidewhy/observable-input
angular rxjs
Last synced: 16 days ago
JSON representation
angular input properties as observable streams
- Host: GitHub
- URL: https://github.com/insidewhy/observable-input
- Owner: insidewhy
- Created: 2017-09-10T22:59:09.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2020-07-01T09:08:01.000Z (over 4 years ago)
- Last Synced: 2024-05-07T19:21:37.475Z (6 months ago)
- Topics: angular, rxjs
- Language: TypeScript
- Size: 12.7 KB
- Stars: 48
- Watchers: 5
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: readme.markdown
Awesome Lists containing this project
README
# Installation
```bash
npm install -S observable-input
```
or
```bash
yarn add observable-input
```# Usage
```typescript
import { Component, Input } from '@angular/core'
import { Observable } from 'rxjs'
import { ObservableInput } from 'observable-input'@Component({
templateUrl: './some-component.html',
selector: 'app-some-component',
})
class SomeComponent {
@Input() @ObservableInput()
private index: Observable
}
```It can be used like this with a non-observable input for `index`:
```html```
# Details
This decorator works by replacing the input with a property, the getter returns a value with type `Observable` while the setter expects a variable of type `T`. This introduces a few drawbacks:
* While you should generally only be reading your input values and not setting them, the mismatch of types for the setter and getter here is still potentially a source of confusion.
* For now the angular code (whether AOT compiled or not) only writes to a component's inputs (in this case via the setter) and never reads from them, if it did it would receive a value with type `Observable` when it expects a value of type `T`.
* The angular compiler does not type check the values passed to a component match the types of the `@Input`, if it did it would raise an error indicating that the input should be of type `Observable` instead of `T`.