首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尽管模块级别为角4,注入服务仍未正确执行

尽管模块级别为角4,注入服务仍未正确执行
EN

Stack Overflow用户
提问于 2018-01-29 17:37:54
回答 1查看 28关注 0票数 1

我有一个叫VenueAdminInceptionService的服务

代码语言:javascript
复制
import {Subject} from 'rxjs/Subject';
import {Observable} from "rxjs/Observable";
import {VenueAdminInceptionModel} from '../../models/venueadmininceptionmodel/venueadmin.inception.model';

export class VenueAdminInceptionService{

  //pk and url service
  private pkurlsend = new Subject<VenueAdminInceptionModel>();

  sendurlpk(payload: VenueAdminInceptionModel){
    this.pkurlsend.next(payload);
  }

  receiveurlpk(): Observable<VenueAdminInceptionModel>{
    return this.pkurlsend.asObservable();
  }
}

它被注入应用程序模块中。

代码语言:javascript
复制
import {VenueAdminInceptionService} from './services/venueadmin/venueadmin.inception.service';
providers: [VenueService, ModalToggleService, VenueAdminInceptionService],

在我的路由中,该服务的使用方式如下。

与venueprofileComponent,venueadmincateringComponent,VenuecreatededitComponent,VenueroomadminpageComponent,VenueadminsocialmediaComponent`的VenueadminactualComponent being the observeable with

做调查员。

VenueadminactualComponent中可观察到的代码:

代码语言:javascript
复制
constructor(private route: ActivatedRoute, private inceptionservice: VenueAdminInceptionService) { }

  ngOnInit() {
    this.inceptedroute = this.route.snapshot.url[0].path;
    if(this.inceptedroute === 'venue-admin'){
      this.permission = 'venue';
    }
    if(this.inceptedroute === 'suits-venue-admin'){
      this.permission = 'suits';
    }

    const payload = {
      pk: this.route.snapshot.params.pk,
      permission: this.permission,
    };
    this.inceptionservice.sendurlpk(payload);

  }

然后每一个可观测到的都是这样的。

代码语言:javascript
复制
constructor(private inceptionservice: VenueAdminInceptionService) { }

  ngOnInit() {
    this.inceptionservicevar = this.inceptionservice.receiveurlpk()
      .subscribe(
        (incep: VenueAdminInceptionModel) => {
          this.permission = incep.permission;
          this.venueid = incep.pk;
        }
      );
    console.log(this.permission);
    console.log(this.venueid);
  }

  ngOnDestroy(){
    this.inceptionservicevar.unsubscribe();

  }

控制台日志为空白。这让我觉得什么都没通过。

我认为这可能是我的应用程序架构,但这就是为什么我提供了服务应用模块广泛。

如果这一点很重要,尽管我看不出路由是如何实现的,但路由如下:

代码语言:javascript
复制
{path: 'venue-admin/:pk', component: VenueadminactualComponent,
    children:[
      {path: 'profile', component: VenueprofileComponent },
      {path: 'catering', component: VenueadmincateringComponent},
      {path: 'venuepage', component: VenuecreateeditComponent},
      {path: 'room', component: VenueroomadminpageComponent},
      {path: 'socialmedia', component: VenueadminsocialmediaComponent},
    ]},

请帮忙!潘趣和派等着你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-29 17:43:12

日志需要在对订阅的响应中:

代码语言:javascript
复制
ngOnInit() {
    this.inceptionservicevar = this.inceptionservice.receiveurlpk()
      .subscribe(
        (incep: VenueAdminInceptionModel) => {
          this.permission = incep.permission;
          this.venueid = incep.pk;
          console.log(this.permission);
          console.log(this.venueid);
        }
      );        
  }

否则,它们将在订阅返回数据之前运行(因为订阅是异步发生的)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48506973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档