@steppy/angular

中文文档
0.9.0发布于 2026/11/02Apache-2.0TypeScriptES Module构建来源已验证

Steppy应用内游览覆盖的Angular适配器:provideSteppyTours(),以及SteppyTours服务

中文使用文档
文档目录4 节
  1. 安装
  2. 使用
  3. 适配器为您做了什么
  4. 开发

@steppy /角

Steppy的应用内导览的Angular适配器:引导弹出窗口 实时应用程序,从您的端到端测试运行的相同Markdown场景编译。 覆盖层本身是 <steppy-tour-host> 从 @steppy/player/tour;这 package以Angular的方式安装它。

  • provideSteppyTours({...}):配置,在 app.config.ts.
  • <steppy-tours />:叠加,放置 一次 在应用程序外壳中。
  • SteppyTours:一个根服务to start() / stop() / next() 旅游, 与 active, current 和 lastError 信号和信号 events 流。
  • steppyTourStart:点击时开始游览的指令。

Angular 20-22, zone.js或无区,ssr安全(没有任何渲染或加载 服务器)。你的应用不需要 CUSTOM_ELEMENTS_SCHEMA.

安装

npm install @steppy/angular @steppy/player

@steppy/player 是与适配器版本相同的对等依赖项。

要使用未发布的构建版本,请从Steppy签出中构建两个版本:

npm --prefix packages/player ci
npm --prefix packages/player run build
npm --prefix packages/angular ci
npm --prefix packages/angular run build

然后,在您的应用程序中,要么依赖于文件夹 ("@steppy/player": "file:<checkout>/packages/player", "@steppy/angular": "file:<checkout>/packages/angular/dist", "preserveSymlinks": true 这样Angular就不会被加载两次), 或者安装tarball npm pack 从这两个文件夹中取出。

使用

// app.config.ts
import { inject } from '@angular/core';
import { toSignal } from '@angular/core/rxjs-interop';
import { TranslateService } from '@ngx-translate/core';
import { map } from 'rxjs';
import { provideSteppyTours } from '@steppy/angular';

export const appConfig: ApplicationConfig = {
  providers: [
    provideRouter(routes),
    provideSteppyTours({
      // Written by `steppy tours` (an app-assets target in public/tours).
      fallbackManifest: 'tours/tours.manifest.json',
      // Optional: follow your i18n library. Without it the tours follow <html lang>.
      locale: () => {
        const translate = inject(TranslateService);
        return toSignal(translate.onLangChange.pipe(map((e) => e.lang)), { initialValue: translate.getCurrentLang() ?? '' });
      },
    }),
  ],
};
// app.component.ts
@Component({
  selector: 'app-root',
  imports: [RouterOutlet, SteppyToursComponent, SteppyTourStart],
  template: `
    <button steppyTourStart="create-invoice">Show me how</button>
    <router-outlet />
    <steppy-tours (tourComplete)="onDone($event)" />
  `,
})
export class AppComponent {}
// anywhere
const tours = inject(SteppyTours);
await tours.start('send-invoice', { params: { invoiceId: 1001 } });

适配器为您做了什么

  • 懒惰,只加载浏览器。 后导入叠加模块 第一次渲染,并且只在浏览器中。
  • 路由器导航。 从入口路线开始的游览 与导航 Router.navigateByUrl,在Angular区域内,所以路由 视图在zone.js应用中渲染。拒绝或重定向的守卫 导航立即使游览失败。tour-error,故 entry-params) 而不是让它等待一个永远不会渲染的元素。集 navigate: 'document' 对于整个页面加载,或传递您自己的函数。
  • 区。 叠加的观察者、轮询和帧运行在Angular之外 区域,所以他们从不驱动变化检测;事件、输出和路由器 回到里面来。
  • start() 从任何地方。 它等待 <steppy-tours> 去上马 叠加加载(readyTimeout(默认为10秒),最后一个调用获胜,并且它 解决了 false -从不拒绝-当旅行无法开始时。

破坏 <steppy-tours> 暂停巡回演出而不是解散 它(覆盖层保留其恢复记录)。呼叫 tours.stop() 首先结束它。

输入在 <steppy-tours> 覆盖 provideSteppyTours() 设置: fallbackManifest, manifest, buildId, guideOrigin, locale, targetTimeout, baseZIndex, disabled, strings, source。输出: tourStart, tourStep, tourComplete, tourDismiss, tourOffpath, tourError.

哈希路由(withHashLocation())不支持应用内导览。

完整的参考-创作之旅,覆盖的选项和事件, 远程模式、CSP和可信类型- is docs/tours.md 在草原上 存储库。

开发

npm ci
npm test        # the zoneless suite, then the zone.js suite (ng test --configuration zone)
npm run build   # ng-packagr → dist/; publish dist/, never this folder

覆盖层被specs中的假元素所取代(src/testing/),除了 在 real-overlay.spec.ts。该浏览器针对一个真实的Angular + PrimeNG进行了测试 应用程序是 tests/integration/test_tour_angular_it.py (演示是 fixtures/tour-demo-angular/)。

版本与发布记录

@steppy/angular 共发布 9 个版本,首次发布于 2026/10/22;过去 12 个月发布了 9 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.9.0latest2026/11/02今天
0.8.12026/10/304 天前
0.8.02026/10/277 天前
0.7.02026/10/277 天前
0.6.02026/10/259 天前
0.5.02026/10/2410 天前

关于 @steppy/angular 的常见问题

@steppy/angular 是什么?

Steppy应用内游览覆盖的Angular适配器:provideSteppyTours(),以及SteppyTours服务

如何安装 @steppy/angular?

在项目目录运行 npm install @steppy/angular,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:rxjs(^7.4.0)、@angular/core(>=20.0.0 <23.0.0)、@steppy/player(0.9.0)、@angular/common(>=20.0.0 <23.0.0)、@angular/router(>=20.0.0 <23.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@steppy/angular 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@steppy/angular 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@steppy/angular 可以商用吗?

@steppy/angular 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@steppy/angular 还在维护吗?

最新版本 0.9.0 发布于 2026/11/02(今天);至今共发布 9 个版本,其中过去 12 个月发布了 9 个;首次发布于 2026/10/22。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。