나는 각 CLI를 사용하여 새 NG 프로젝트를 설치 한 5 4에서 마이그레이션 할 때 내가 타이프 라이터 TS2322 오류의 부하를 얻을 이유를 이해하려고 노력입력 오류 TS2322 : 유형 'Observable <boolean | {}> - 각도 5 타이프 라이터 2.4.2
Angular CLI: 1.5.5
Node: 8.9.1
OS: darwin x64
Angular: 5.0.4
JSON 패키지가 표준이며, 여기에 스 니펫이 있습니다.
error TS2322: Type 'Observable' is not assignable to type 'Observable'. Type 'boolean | {}' is not assignable to type 'boolean'. Type '{}' is not assignable to type 'boolean'.
새로운 타이프 2.4에 대한 어떤 제안을 : 없다는 오류와 $ this.show_dropdown
import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';
import {Observable} from 'rxjs/Rx';
@Component({
selector: 'app-sidebar',
templateUrl: './sidebar.component.html',
styleUrls: ['./sidebar.component.scss']
})
export class SidebarComponent implements OnInit {
show_dropdown$: Observable<boolean>;
@ViewChild('el_dropdown_button') el_dropdown_button: ElementRef;
constructor() { }
ngOnInit() {
// show dropdowng ser
this.show_dropdown$ = Observable
.merge(
// on down arrow click
Observable
.fromEvent(this.el_dropdown_button.nativeElement, 'click')
.scan((value) => !value, false)
.startWith(false),
// on input click -> true
Observable
.fromEvent(this.el_filter_input.nativeElement, 'click')
.mapTo(true),
)
.startWith(false);
}
}
내 IDE 하이라이트 : 여기
"core-js": "^2.4.1",
"rxjs": "^5.5.2",
"zone.js": "^0.8.14"
"@angular/core": "^5.0.0",
"tslint": "~5.7.0",
"typescript": "~2.4.2"
내가 테스트입니다 내 구성 요소입니다 .2 또는 2.6?
왜 사용을 제거해야합니다을 '(click) = method ($ event)'대신 관측 가능한 리스너, 특히 구현시 Observables를 모두 사용하는 경우? –
몇 가지 이유가있을 수 있습니다. 이 작은 설명 상자에서 설명하기에는 너무 많은 시간이 걸릴 것입니다. 하지만 필터가있는 큰 응용 프로그램을 사용하면 RXJS를 좋아하고 사용하게됩니다. –
Rx를 좋아하고 많은 데이터가있는 큰 응용 프로그램을 사용합니다. 무엇이든을 위해 사용중인기구의 원리를 위반하는 것은 나쁜 디자인이다. 하지만 어쨌든, 아마도 당신을 위해 대답을했습니다. –