2016-08-09 21 views
14

góc 2 ngModel chỉ làm việc với các biến và các chức năng nhưMở rộng góc chỉ thị 2 ngModel sử dụng quan sát

<input [ngModel]="myVar" (ngModelChange)="myFunc($event)" />

Thay vì biến và chức năng, tôi muốn sử dụng BehaviorSubjects thay

<input [ngModel]="mySubject | async" (ngModelChange)="mySubject.next($event)" />

Có cách nào an toàn để mở rộng ngModel hoặc sử dụng một số loại macro để giảm sự lặp lại trong các mẫu của tôi không?

<input [myNewNgModel]="mySubject" />

+1

Âm thanh như bạn đang tìm kiếm một cái gì đó giống như https: // github. com/góc/góc/các vấn đề/4062. Tôi chắc chắn điều này sẽ đến với Angular2 nhưng chỉ sau khi phát hành. –

+0

@ GünterZöchbauer Tốt để biết có những người khác đang cố gắng để Rx tất cả mọi thứ. Sự khác biệt chính là tôi đang cố gắng mở rộng/tái sử dụng ngModel với các quan sát trong khi đề xuất đang tập trung vào các sự kiện ràng buộc với các quan sát. – nwarp

+0

Đây có phải là thứ cuối cùng đã được giải quyết không? Tôi rất vui khi viết một câu trả lời nhưng hiện tại tôi đang cố gắng để hiểu liệu bạn có thực sự muốn sử dụng các yếu tố đầu vào này như là một phần của biểu mẫu không? Nếu vậy, bạn có nghĩ đến việc nghe mẫu đơn có thể quan sát được không? Nếu không, bạn có thể vui lòng cung cấp cho một số nền tảng về cách bạn đang sử dụng BehaviorSubject của bạn? Chắc chắn có trường hợp sử dụng cho nó, nhưng khi mới để RxJS, chúng tôi có xu hướng lạm dụng các đối tượng một chút. –

Trả lời

0

Một chút muộn để đảng nhưng tôi tin rằng bạn đang quan tâm đến việc này:

@Component({ 
 
    selector: 'app-home', 
 
    templateUrl: './home.component.html', 
 
    styleUrls: ['./home.component.less'] 
 
}) 
 
export class HomeComponent implements OnInit { 
 
    model: Observable<number[]>; 
 

 
    ngOnInit() { 
 
    this.model = this.get(); 
 
    } 
 

 
    get(): Observable<number[]> { 
 
    return Observable.from([[1, 2, 3]]); 
 
    } 
 
} 
 

 
@Component({ 
 
    selector: 'app-child', 
 
    templateUrl: './child.component.html', 
 
    styleUrls: ['./child.component.css'] 
 
}) 
 
export class ChildComponent implements OnInit { 
 
    @Input() numbers; 
 
    constructor() { } 
 

 
    ngOnInit() { 
 
    } 
 

 
}
<app-child [numbers]="(model | async)"></app-child> 
 

 
<!-- child component --> 
 
<h1 *ngFor="let i of numbers">{{i}}</h1>

Các vấn đề liên quan