由于某些原因,这不是this的重复项。 1.我使用的是角度7,而不是角度2。2.我使用的是rxjs6,而不是rxjs5。学习这些较早的版本已不存在,我对此无益。 3.当这个问题没有提到Observable(boolean)
时,我在问一个Observable(boolean)概念。我创建了一个Observable值,希望从中得出true / false。这是我在nav.component.ts文件中的代码
DB::statement('ALTER TABLE `invoices` DROP INDEX
`invoices_erp_id_origin_customer_id_unique`, ADD UNIQUE
`invoices_erp_id_origin_customer_id_unique`
(`erp_id`, `origin`, `customer_id`, `podtyp`)');
控制台输出为:
export class NavComponent implements OnInit {
private $loggedin: Observable<boolean>;
constructor( private auth: AuthenticationService){}
ngOnInit() {
this.$loggedin = this.auth.$isLoggedinSource;
console.log('am i logged in ', this.$loggedin);
}
如何从$ loggedin中获取布尔值,真/假值?
答案 0 :(得分:5)
有两种方法可以用来解包Observable的值。
通过在模板中使用async
管道:
<p>Am I logged In: {{ $isLoggedinSource | async }}</p>
OR
subscribe
进入组件中的Observable:import { Subscription } from 'rxjs';
...
subscription: Subscription;
...
this.subscription = this.$loggedin
.subscribe(data => console.log('am i logged in ', data));
...
ngOnDestroy() {
this.subscription.unsubscribe();
}
如果此$loggedin
重复出现,并且您使用方法2,则必须将其分配给Subscription
类型的属性,然后在内部的unsubscribe
上对其进行调用ngOnDestroy
。
采用第一种方法,您实际上并不需要这样做。
答案 1 :(得分:2)
您必须怀疑它。现在,Rigth正在记录Observable对象本身,但是您需要对其进行订阅,因此,在解析该对象时,您的订阅将监听该对象,然后打印其解析的内容。
答案 2 :(得分:2)
如果您不想订阅,则可以使用async
和await
获得可观察的值,但是要这样做,您必须将Observable
转换为`Promise。
类似这样的东西:
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
public loggedin: boolean;
public otherValue: boolean;
constructor(private auth: AuthenticationService) { }
async ngOnInit() {
this.loggedin = await this.auth.$isLoggedinSource.toPromise();
this.otherValue = await this.auth.$otherObservable.toPromise();
}
}
答案 3 :(得分:1)
您必须订阅观察数据才能获取数据。
this.$loggedin.subscribe((data: boolean) =>
{
console.log('am i logged in ', data);
}