gpt4 book ai didi

angular - 可重复使用的组件值转入第 2 页/任何其他页面

转载 作者:太空狗 更新时间:2023-10-29 18:36:32 26 4
gpt4 key购买 nike

我有组件 search-component 如下 html 片段

 <form class="form-horizontal form-material" (ngSubmit)="Search()" id="carsearch" [formGroup]="bookCarForm"
novalidate>
<div class="row">
<div class="col-sm search-input-align">
<input [owlDateTime]="dt1" [min]="min" [owlDateTimeTrigger]="dt1" class="form-control" formControlName="start_datetime"
placeholder="Start Date & Time">
<owl-date-time #dt1></owl-date-time>
<span class="input-group-addon"><i class="fa fa-calendar fa-search-align"></i></span>
</div>

<div class="col-sm search-input-align">
<input [owlDateTime]="dt2" [min]="min" [owlDateTimeTrigger]="dt2" class="form-control" formControlName="end_datetime"
placeholder="End Date & Time">
<owl-date-time #dt2></owl-date-time>
<span class="input-group-addon "><i class="fa fa-calendar "></i></span>
</div>
<div class="col-sm search-input-align">
<div class="toggle" (click)=toggleTextBox()>
<input type="checkbox" class="check" >
<b class="b switch"></b>
<b class="b track"></b>
</div>
<h4 id="door-delivery">Door Delivery</h4>
</div>
<div class="col-sm search-input-align address">
<div *ngIf="!visability">
<input class="form-control " formControlName="Enter_address" type="text" placeholder="Enter Address"
>
</div>
<div *ngIf="visability">
<select formControlName="p_location" class="form-control selectpicker" id="select-city" >
<option data-tokens="" disabled>
<h2>select any one </h2>
</option>
<option data-tokens="Delhi">
<h2>Hebbal</h2>
</option>
<option data-tokens="Mumbai">
<h2>Yelahanka</h2>
</option>
<option data-tokens="hyderabad">
<h2>BTM</h2>
</option>
</select>
</div>
</div>
<div class="col-sm search-input-align btn-book-now">
<button type="submit" [disabled]="bookCarForm.invalid" class="btn btn-primary align-items-center btn-align">Book
Now</button>
</div>
</div>
</form>

search-component.ts 中,如下所示

@Output() searchValues = new EventEmitter(); 
this.storage.set("values", this.Search.value);//storing values in local storage
this.searchValues.emit("values");

这个search-component 是可重用的。目前我在 Page1 中使用此表单选择 page1 中的值并重定向到 page2。在 page2 中,我也在使用这种形式。 page1 中给出的所有值是多少,应该传递给 page2。所以我尝试了 Event Emitter 但它不是结转值。 I tried this link ,但这并不能帮助我。实现此输出的最佳方法是什么。谁能帮帮我。

最佳答案

创建以下服务 stored-data-service.ts:

import {Component, Injectable} from 'angular2/core'
import {BehaviorSubject, Observable} from 'rxjs';

@Injectable()
export class StoredDataService {
values:any;
values$:BehaviorSubject<any> = new BehaviorSubject('');
constructor(){}

setValues(values){
this.values = values;
this.values$.next(values);
}
}

然后通过导入将其添加到您的app.modules.ts

import { StoredDataService } from "./stored-data-service.ts";

然后将其添加到 NgModule 中的 providers 数组中

@NgModule({
declarations: [
...],
imports: [
...],
providers: [
StoredDataService],
bootstrap: [AppComponent]
})

现在通过将它添加到构造函数中,将其注入(inject)到组件 search-component.ts 中,如下所示:

constructor (public storedDataService: StoredDataService){}

最后用它来添加数据

this.storedDataService.setValues(this.Search.value);//storing values in local storage

要在代码中的任何位置检索数据(即使在其他组件或服务中,这就是诀窍),您需要订阅值$:

 const subscription = this.storedDataService.values$.subscribe( (values) => {
//set a local variable here storing values in you component
//...
this.values = values
console.log (values);
})

如果您要在另一个组件中再次使用服务 StoredDataService,请记住像以前一样将其注入(inject)构造函数并订阅值 $。每当您的代码的任何部分调用 storedDataService.changeValues(...) 时,无论您在何处订阅,您的订阅者的回调都会被执行,从而为您提供新值。

编辑

我改了代码,添加了BehaviorSubject和订阅,不然不行

关于angular - 可重复使用的组件值转入第 2 页/任何其他页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52272472/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com