小编Jul*_*ius的帖子

Firestore + AngularFire2 分页(按范围查询项目 - .startAfter(lastVisible) )

在一个组件中,我想从 FireStore 中提取一系列项目,例如。从 0 到 5,从 5 到 10 等等。我在 FireStore 的文档中找到了这个,但是他们不使用 AngularFire2,所以我尝试重构时变得更加混乱。我通过简单的splice()'ing使它工作:

service ->

topFirstScores(): AngularFirestoreCollection<Score> {
  return this.fireRef.collection('scores', r => r
          .orderBy('score', 'desc').limit(6)
  );
}

component ->

$scores = new Subject();

this.scores$ = this.$scores.asObservable();
if (this.scores === 'first') {
  this.scoreS.topFirstScores().valueChanges().take(1)
    .subscribe(_ => this.$scores.next(_.splice(0, 3)))
} else {
  this.scoreS.topFirstScores().valueChanges().take(1)
    .subscribe(_ => this.$scores.next(_.splice(3, 3)))
}
Run Code Online (Sandbox Code Playgroud)

但这似乎更像是一种解决方法。谁能翻译一下:

var first = db.collection("cities")
        .orderBy("population")
        .limit(25);

return first.get().then(function (documentSnapshots) {
  // Get the last visible document
  var lastVisible = documentSnapshots.docs[documentSnapshots.docs.length-1]; …
Run Code Online (Sandbox Code Playgroud)

rxjs angularfire2 angular google-cloud-firestore

6
推荐指数
1
解决办法
7131
查看次数

Angular可以有多个引导程序组件吗?

愚蠢的问题警报:

在主app.module.ts文件中,我们使用定义了顶层组件的值设置bootstrap参数。因此:

@NgModule({
  bootstrap: [AppComponent]
})
Run Code Online (Sandbox Code Playgroud)

我们告诉我们,当使用我们的模块时,我们的顶级组件是AppComponent。但是为什么要排列成阵列?可以有更多的顶级组件吗?

bootstrapping angular

5
推荐指数
1
解决办法
2258
查看次数

读取并列出 Angular 模块的所有导出

初始情况如下:在node_moduls我的项目文件夹中,有一个名为的模块,@example其中包含我想在应用程序中使用的一些组件。组件的数量各不相同,因此有必要动态说明模块中包含哪些组件。该example.module.ts文件如下所示:

\n\n
import { NgModule } from '@angular/core';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { FirstModule } from 'EXAMPLE_PATH';\nimport { SecondModule } from 'EXAMPLE_PATH';\nimport { ThirdModule } from 'EXAMPLE_PATH';\nimport { FourthModule } from 'EXAMPLE_PATH';\n\n\nconst MODULES = [\n  FirstModule,\n  SecondModule,\n  ThirdModule,\n  FourthModule \n];\n\n@NgModule({\n  imports: [NgbModule.forRoot(), ...MODULES],\n  exports: [NgbModule, ...MODULES],\n  providers: [ExampleService]\n})\nexport class ExampleModule {\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

MODULES数组包含所包含的所有组件。通常,模块会通过以下方式导入到应用程序中app.module.ts

\n\n
import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\nimport { ExampleModule } from '@example/example-module';\n\nimport …
Run Code Online (Sandbox Code Playgroud)

npm angular

5
推荐指数
0
解决办法
1905
查看次数

主机侦听器滚动事件未触发

我的主要目标是当用户向下滚动时,我需要获取当前的scrollTop 偏移量。用户可以通过鼠标单击滚动条或使用鼠标滚轮进行滚动,因此当用户这样做时,我想更新ejQuery()take()上的和skip()(或page())参数以触发 http get 并为该视图提供数据。

使用 SyncFusion 1

下面的代码是我尝试向ejTreeGrid分配一个指令,scroll通过HostListener()监视事件,但正如用户 PierreDuc 提到的,ejTreeGrid实现了它的自定义滚动条,所以默认的滚动条不会触发。PierreDuc 建议使用getScrollTopOffset方法,但我仍然需要在每次用户执行滚动操作时触发它......


指令被附加到 SyncFusion 的ejTreeGrid组件以监视scroll事件,但它不会触发。事件一切正常click- 在该子组件上触发。可能出了什么问题?

尝试过:

@HostListener('scrollY', ['$event'])
onScroll(e) {
    console.log(e)
}
@HostListener('onscroll', ['$event'])
onScroll2(e) {
    console.log(e)
}
@HostListener('scroll', ['$event'])
onScroll3(e) {
    console.log(e)
}

@HostListener('scrollX', ['$event'])
onScroll4(e) {
    console.log(e)
}
Run Code Online (Sandbox Code Playgroud)

这有效:

@HostListener('click', ['$event'])
onClick(e) {
    console.log('clicked')
    console.log(e)

}
Run Code Online (Sandbox Code Playgroud)

更新:

还补充道:

@HostListener('mousewheel', ['$event'])
onScroll5(e) {
    console.log('mousewheel')
}

@HostListener('DOMMouseScroll', …
Run Code Online (Sandbox Code Playgroud)

syncfusion angular

5
推荐指数
2
解决办法
2万
查看次数

Rails 5,Carrierwave.找不到发电机'上传器'

我已经成功安装了Carrierwave.我可以从终端看到它:gem list carrierwave=>

*** LOCAL GEMS ***

carrierwave (1.0.0.rc)
Run Code Online (Sandbox Code Playgroud)

但是我仍然无法生成上传器...如果我rails g uploader Picture在终端运行我就得到了Could not find generator 'uploader'.

我唯一的想法是宝石之间可能存在一些冲突.这是gem文件:

source 'https://rubygems.org'

gem 'rails', '~> 5.0.0', '>= 5.0.0.1'
gem 'puma', '~> 3.0'
gem 'bootstrap-sass', '~> 3.3.6'
gem 'autoprefixer-rails', '6.4.0.3'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.2'
gem 'jquery-rails'
gem 'jquery-ui-rails'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.5'
gem 'carrierwave', '~> 0.11.2'
gem 'mini_magick', '~> 4.3'

group :development, :test do
  gem …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails carrierwave

4
推荐指数
1
解决办法
1421
查看次数

Angular:"意外的令牌.期望构造函数,方法,访问器或属性"

我想知道为什么如果我使用varlet关键字声明变量,我会得到这个编译错误?我的意思是,这很顺利:

export class AppComponent {

    refreshClickStream$: any;

    constructor(){
    }
Run Code Online (Sandbox Code Playgroud)

虽然这带来了错误:

export class AppComponent {

    var refreshClickStream$: any;

    constructor(){
    }
Run Code Online (Sandbox Code Playgroud)

typescript angular

4
推荐指数
1
解决办法
2万
查看次数

如果 HTML 绑定中的对象的 *ngFor Let 对象返回空数组,如何显示占位符

我显示在另一个组件 (team-announcements.component) 中创建的模板中的数据...在主 team.component.ts 中,我使用 team-announcements 选择器,并添加 [announcement]="announcements" 和ngFor="让公告公告"加载数据。如果数组没有返回数据 IE 没有公告,如何显示“无公告”之类的占位符?

这是我在 team.component.html 中加载公告的位置。数据通过 API 服务提供,并在“team.component.ts”中检索,相关对象的 HTML 如下。

team.component.ts(获取公告函数):

  getAnnouncements() {
    this.teamsService.getTeamAnnouncements(this.team.slug)
      .subscribe(announcements => this.announcements = announcements);
      console.log("announcements", this.announcements);
  }
Run Code Online (Sandbox Code Playgroud)

team.component.html

<div class="team-announcement">
     <div class="announcement-title">Message of the Day</div>
     <app-team-announcements
        [announcement]="announcement"
         *ngFor="let announcement of announcements">
      </app-team-announcements>
   </div>
Run Code Online (Sandbox Code Playgroud)

这就是上面的“app-team-announcements”如何在单独的文件“team-announcement.component.html”中模板化并导出,然后在上面的代码中使用......

团队公告.component.ts

import { Component, EventEmitter, Input, Output, OnInit, OnDestroy } from '@angular/core';

import { Team, Announcement, User, UserService } from '../core';
import { Subscription } from 'rxjs';

@Component({
  selector: 'app-team-announcements',
  templateUrl: './team-announcement.component.html'
}) …
Run Code Online (Sandbox Code Playgroud)

html binding typescript ngfor angular

4
推荐指数
1
解决办法
969
查看次数

Angular2 - 参数$ event隐式具有'any'类型

我主要担心的是$event这行显示错误:

starClick($event) {
Run Code Online (Sandbox Code Playgroud)

参数$ event隐式具有'any'类型

我也想知道 - 根据Angular2文档,什么$event是捕获事件对象,所以让我问一个愚蠢的问题 - 为什么我们不调用它$object?因为它让我感到困惑,直到我终于意识到这里发生了什么......

import { Component } from '@angular/core';

@Component({
  moduleId: module.id,
  selector: 'stars',
  template: `
      <span class="glyphicon glyphicon-star-empty" (click)= "starClick($event)"></span>
  `
})

export class StarsComponent {
  starClick($event) {
    if($event.target.className == "glyphicon glyphicon-star-empty") {
      $event.target.className = "glyphicon glyphicon-star";
    }
    else{
      $event.target.className = "glyphicon glyphicon-star-empty";
    }
  }
} 
Run Code Online (Sandbox Code Playgroud)

events angular2-forms angular

3
推荐指数
2
解决办法
5295
查看次数

Angular4 - 动态改变css类 - 哪个更好?

从教程中,讲师提出了这个:

<span class="glyphicon" [class.glyphicon-star-empty]="isFavorite" [class.glyphicon-star]="!isFavorite" (click)="toggleClass()"></span>
Run Code Online (Sandbox Code Playgroud)

零件:

isFavorite = false;

toggleClass() {
 this.isFavorite != this.isFavorite;
}
Run Code Online (Sandbox Code Playgroud)


我的方式是:

<span class="glyphicon" [ngClass]="classes" (click)="toggleClasses()"></span>
Run Code Online (Sandbox Code Playgroud)

零件:

classes = "glyphicon-star-empty";

toggleClasses() {
 this.classes == "glyphicon-star-empty"? this.classes = "glyphicon-star" : this.classes = "glyphicon-star-empty";
}
Run Code Online (Sandbox Code Playgroud)

两种方式都按预期工作,但我觉得从性能角度来看,我的方式并不是很好,因为我正在使用循环,对吧?

对不起,如果答案可能只是"是".我只是想确定它是如何工作的(特别是对所有那些Ng指令感兴趣,比如ngModel,ngClass).

谢谢

angular

3
推荐指数
2
解决办法
8263
查看次数

Rxjs-检查Observable是否为空,而无需订阅

我想知道是否有可能检查可观察值是否收到任何值。而且我想要这个而不订阅它,因为我太懒了以至于无法覆盖当前代码。问题是我在父组件中创建了可观察对象,然后将其传递给子组件。而且我只需要一件小事,因此订阅该书似乎是不必要的...

父组件:

  adverts$: Observable<advert[]>;

  ngOnInit() {
    this.adverts$ = this.advertService.advertsPerUser();
Run Code Online (Sandbox Code Playgroud)

服务:

  advertsPerUser() {
    return this.advertsKeysPerUser()
      .map(adKeys => adKeys.map(adKey => this.afDb.object('adverts/' + adKey.$key )))
        .flatMap(val => Observable.combineLatest(val) );
  }
Run Code Online (Sandbox Code Playgroud)

所以我的目标是在parent-component.html中执行以下操作:

<div *ngIf="adverts$"> 
Run Code Online (Sandbox Code Playgroud)

observable rxjs angular

3
推荐指数
3
解决办法
1万
查看次数