npm 包 simple-context-angular2 使用教程

阅读时长 7 分钟读完

什么是 simple-context-angular2?

simple-context-angular2 是一个基于 Angular2 框架封装的 npm 包,能够快捷、便捷地实现组件间的数据通信,精简了大量的模板代码,提高了代码的复用性,提升了编码效率。简单来讲,就是一种在 Angular2 中使用 context API 传递数据的方式。

安装 simple-context-angular2

在使用 simple-context-angular2 之前,需要在项目中安装该 npm 包:

使用指南

1. 创建数据服务类

在 Angular2 中,我们需要创建一个数据服务类,来定义需要在组件间传递的数据和方法。这里我们以 HeroService 为例:

-- -------------------- ---- -------
------ ------------ ---- ----------------
------ --------------- ---- --------------------------
------ ------------ -------- ---- -------

-------------
------ ----- ----------- -
  ------- ----- - --- ------------------
  ------ ------------------ - --------------------------
  ---------------- --------

  ------------- ------- -
    ----------------------
  -
-

@SimpleContext() 是 simple-context-angular2 的核心装饰器,用来为数据注入 context 对象,使得数据可以在组件间流通。

2. 注册数据服务类

在 app.module.ts 中注册 HeroService:

-- -------------------- ---- -------
------ ---------- ---- ----------------
------ --------------- ---- ----------------------------
------ -------------- ---- ------------------
------ ------------- ---- -----------------

-----------
  ------------- ---------------
  -------- ----------------
  ---------- --------------
  ---------- --------------
--
------ ----- --------- --

3. 在组件中使用数据

在需要使用数据的组件中,我们可以通过 @SimpleContext() 装饰器获取 context 对象,并调用数据服务类中定义的方法,从而读取和修改数据。

这里以 HeroDetailComponent 组件为例:

-- -------------------- ---- -------
------ ----------- ---- ----------------
------ ------------- ---- -----------------
------ -------------- ---- -------

------------
  --------- --------------
  --------- -
    ---- ------------ - ----- -- -------------- -- -- ----------
    ------ ------------------ ------------------- --
  -
--
------ ----- ------------------- -
  ----- -------
  ------ -------------

  ------------------- ------------ ------------ --

  ---------- -
    ---------- - ------------------------------------- -- -
      --------- - -----
    ---
  -

  ------------- -
    -------------------------
  -

  ---------- -
    ------------------------------------
  -
-

我们可以从 HeroService 中获取到 name$ Observable,并将其绑定到模板上,在 HeroDetailComponent 中订阅 name$ ,根据 name$ 的值显示对应的英雄名字。在修改英雄名字时,调用 HeroService 中的 setName 方法,将新的数据传递给 Name Observable。

4. 父组件和子组件间的数据通信

simple-context-angular2 支持组件之间的父子关系,可以实现父组件向子组件传递数据。

这里我们以 HeroListComponent 和 HeroDetailComponent 为例,HeroListComponent 是父组件,HeroDetailComponent 是子组件,HeroListComponent 向 HeroDetailComponent 传递了一个 hero 对象。

-- -------------------- ---- -------
------ ----------- ---- ----------------
------ ------------- ---- -----------------

------------
  --------- ------------
  --------- -
    ---- ----------- ---- -- ------- ---------------------------
      -------------
    ------
    ------------ ------------------------------------
  -
--
------ ----- ----------------- -
  ------ - ----- -- ----- ------------ ---- -- ----- ---------- ---- -- ----- ------------
  -------------
  ------------------- ------------ ------------ --

  ---------------- -
    ----------------- - -----
    -------------------------- ------------- ---- ---
  -
-
-- -------------------- ---- -------
------ ----------- ------ ---- ----------------
------ ------------- ---- -----------------
------ -------------- ---- -------

------------
  --------- --------------
  --------- -
    ---- -------------
      ------------- -- -- ----
    ------
  -
--
------ ----- ------------------- -
  -------- --- ----------- -
    -------------------
  -
-

我们在 HeroListComponent 中调用 HeroService 中的 context 方法,将选中的英雄信息存到 context 对象中。在 HeroDetailComponent 中,通过使用 @Input() 装饰器,绑定 hero 对象,读取存储在 context 中的信息。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600557fc81e8991b448d516b

纠错
反馈