具有可观察参数的角度单击操作

时间:2018-01-26 14:14:31

标签: angular observable

我有一个关于Observable的问题,在我的HTML中,当我点击“RUN”按钮时,它将在ts中调用函数run():

@input application: Observable<Application>;

run() {
  this.application.subscribe(x => this.service.sendRequest(x.data.id););
}

这里我有一个问题,因为每当我从另一个页面更新应用程序时,这个sendRequest将被触发,并将再次运行。 你能解释一下如何做这个动作吗? 我试着这样做:

    @input application: Observable<Application>;

    run() {
      const id = this.application.subscribe(() => map(res => 
{return x.data.id}));
      this.service.sendRequest(id);
    }

它不起作用,因为id为null。

2 个答案:

答案 0 :(得分:0)

那是因为你订阅了一个可观察者。意思是,每次observable的数据发生变化时,它都会向该observable发出更新事件,并输出新数据。

答案 1 :(得分:0)

将您的服务调用放在地图中:

@Configuration
public class MongoConverterConfig
{

  @Bean
  public CustomConversions dateConversions()
  {
    List<Converter<?, ?>> converterList = new ArrayList<Converter<?, ?>>();
    converterList.add(new DateConverter());
    return new CustomConversions(converterList);
  }

  @WritingConverter
  static class DateConverter implements Converter<Date, Date> {

    @Override
    public Date convert(Date input) {
      if (input == null) {
        return null;
      }
      return Date.from(Instant.ofEpochMilli(input.getTime()).truncatedTo(ChronoUnit.DAYS));
    }
  }
}