小编sim*_*www的帖子

如何在Angular 4中推送到Observable of Array?RxJS

我的服务类上有一个属性,如下所示:

articles: Observable<Article[]>;
Run Code Online (Sandbox Code Playgroud)

它由使用标准http.get().map()解决方案的getArticles()函数填充.

如何手动将新文章推送到此数组中; 一个还没有坚持,所以不是http的一部分?

我的方案是,你创建一个新文章,在保存之前我希望Article []数组将这个新文章推送到它,以便它显示在我的文章列表中.

此外,此服务在两个组件之间共享,如果组件A使用ng消耗服务OnInit()并将结果绑定到重复节*ngFor,则将从组件B更新服务数组同时更新组件A的ngFor节中的结果?或者我必须手动更新视图吗?

非常感谢,西蒙

javascript observable rxjs angular

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

PHP - 检测CSV分隔符的最佳方法

我已经看到多个线程,关于自动检测传入CSV的分隔符的最佳解决方案.其中大多数是长度在20-30行之间的函数,多个循环预定的分隔符列表,读取前5行和匹配计数等等

这是一个例子

我刚刚实施了这个程序,只做了一些修改.工作出色.

然后我找到了以下代码:

private function DetectDelimiter($fh)
{
    $data_1 = null;
    $data_2 = null;
    $delimiter = self::$delim_list['comma'];
    foreach(self::$delim_list as $key=>$value)
    {
        $data_1 = fgetcsv($fh, 4096, $value);
        $delimiter = sizeof($data_1) > sizeof($data_2) ? $key : $delimiter;
        $data_2 = $data_1;
    }

    $this->SetDelimiter($delimiter);
    return $delimiter;
}
Run Code Online (Sandbox Code Playgroud)

这对我来说看起来像是在实现SAME结果,其中$ delim_list是一个分隔符数组,如下所示:

static protected $delim_list = array('tab'=>"\t", 
                                     'semicolon'=>";", 
                                     'pipe'=>"|", 
                                     'comma'=>",");
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么我不应该这么简单地做到这一点,为什么到处都是我看起来更复杂的解决方案似乎是公认的答案?

谢谢!

php csv delimiter

7
推荐指数
4
解决办法
6996
查看次数

Angular 4 RxJs Observable Subjects 数组未随新对象更新

所以最近我了解了 Subjects,并且我正在尝试在个人项目中使用它们。我有一个从 json 文件中获取数据并将其转换为“文章”类型的服务。Article 是一个自定义类,用于保存有关博客文章的信息。

我的最终目标是获取这个文章数组,然后当我按下 + 按钮时,它会向当前列表添加一个新的空白文章,并且视图应该通过显示具有一些默认值的空白文章来表示它。这不会保留(保存到 json)新的空白文章,而只是将其添加到当前列表中,以便视图更新并显示它。储蓄将在稍后到来。

我这辈子都不能让它发挥作用。所有文章都正确显示在我的“文章列表”页面上,但手动向其推送空白文章似乎根本没有任何作用。

这是我的服务文件

@Injectable()
export class ArticleService {

  headers: Headers;

  options: RequestOptions;

  articles: ReplaySubject<Article[]>;

  private url = 'data/articles.json';

  constructor(private http: Http) { 
    this.headers = new Headers({ 'Content-Type': 'application/json' });
    this.options = new RequestOptions({ headers: this.headers });
    this.articles = new ReplaySubject<Article[]>();
  }

  /**
   * fetch a list of articles
   */
  getArticles(): Observable<Article[]> {

    // no articles fetched yet, go get!
    return this.http.get(this.url, this.options)
                    .map(response => <Article[]>response.json())
                    .do(data => this.articles.next(data))
                    .catch(this.handleError);
  }

  /**
   * …
Run Code Online (Sandbox Code Playgroud)

javascript observable rxjs subject-observer angular

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

标签 统计

angular ×2

javascript ×2

observable ×2

rxjs ×2

csv ×1

delimiter ×1

php ×1

subject-observer ×1