當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript platform-server.PlatformState類代碼示例

本文整理匯總了TypeScript中@angular/platform-server.PlatformState的典型用法代碼示例。如果您正苦於以下問題:TypeScript PlatformState類的具體用法?TypeScript PlatformState怎麽用?TypeScript PlatformState使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


在下文中一共展示了PlatformState類的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。

示例1: bootstrap

          return platform.bootstrapModuleFactory(factory).then((moduleRef: NgModuleRef<{}>) => {

            const state: PlatformState = moduleRef.injector.get(PlatformState);
            const appRef: ApplicationRef = moduleRef.injector.get(ApplicationRef);

            appRef.isStable
              .filter((isStable: boolean) => isStable)
              .first()
              .subscribe((stable) => {

                // Fire the TransferState Cache
                const bootstrap = moduleRef.instance['ngOnBootstrap'];
                bootstrap && bootstrap();

                // The parse5 Document itself
                const AST_DOCUMENT = state.getDocument();

                // Strip out the Angular application
                const htmlDoc = state.renderToString();

                const APP_HTML = htmlDoc.substring(
                  htmlDoc.indexOf('<body>') + 6,
                  htmlDoc.indexOf('</body>')
                );

                // Strip out Styles / Meta-tags / Title
                const STYLES = [];
                const SCRIPTS = [];
                const META = [];
                const LINKS = [];
                let TITLE = '';

                //let STYLES_STRING = htmlDoc.substring(
                  //htmlDoc.indexOf('<style ng-transition'),
                  //htmlDoc.lastIndexOf('</style>') + 8
                //);
              let STYLES_STRING: string = htmlDoc.indexOf('<style ng-transition') > -1
                                    ? htmlDoc.substring(
                                        htmlDoc.indexOf('<style ng-transition'),
                                        htmlDoc.lastIndexOf('</style>') + 8)
                                    : null;
                // STYLES_STRING = STYLES_STRING.replace(/\s/g, '').replace('<styleng-transition', '<style ng-transition');

                const HEAD = AST_DOCUMENT.head;

                let count = 0;

                for (let i = 0; i < HEAD.children.length; i++) {
                  let element = HEAD.children[i];

                  if (element.name === 'title') {
                    TITLE = element.children[0].data;
                  }

                  if (element.name === 'script') {
                    SCRIPTS.push(
                      `<script>${element.children[0].data}</script>`
                    );
                  }

                  // Broken after 4.0 (worked in rc)
                  // if (element.name === 'style') {
                  //   let styleTag = '<style ';
                  //   for (let key in element.attribs) {
                  //     if (key) {
                  //       styleTag += `${key}="${element.attribs[key]}">`;
                  //     }
                  //   }

                  //   styleTag += `${element.children[0].data}</style>`;
                  //   STYLES.push(styleTag);
                  // }

                  if (element.name === 'meta') {
                    count = count + 1;
                    let metaString = '<meta';
                    for (let key in element.attribs) {
                      if (key) {
                        metaString += ` ${key}="${element.attribs[key]}"`;
                      }
                    }
                    META.push(`${metaString} />\n`);
                  }

                  if (element.name === 'link') {
                    let linkString = '<link';
                    for (let key in element.attribs) {
                      if (key) {
                        linkString += ` ${key}="${element.attribs[key]}"`;
                      }
                    }
                    LINKS.push(`${linkString} />\n`);
                  }
                }

                resolve({
                  html: APP_HTML,
                  globals: {
                    styles: STYLES_STRING,
                    title: TITLE,
//.........這裏部分代碼省略.........
開發者ID:SKorolchuk,項目名稱:aspnetcore-angular2-universal,代碼行數:101,代碼來源:temporary-aspnetcore-engine.ts

示例2: async

  WebAppInternals.registerBoilerplateDataCallback('angular', async (request, data) => {

    let document,
      platformRef: PlatformRef;
    // Handle Angular's error, but do not prevent client bootstrap
    try {


      document = `
        <html>
          <head>
              <base href="/">
          </head>
          <body>
              <app></app>
          </body>
        </html>
      `;

      // Integrate Angular's router with Meteor
      const url = request.url;

      // Get rendered document
      platformRef = platformDynamicServer([
        {
          provide: INITIAL_CONFIG,
          useValue: {
            // Initial document
            document,
            url
          }
        }
      ]);

      const appModuleRef = await platformRef.bootstrapModule(ServerAppModule, {
        ngZone: 'noop',
        providers: [
          {
            provide: ResourceLoader,
            useValue: {
              get: Assets.getText
            },
            deps: []
          }
        ]
      });

      const applicationRef: ApplicationRef = appModuleRef.injector.get(ApplicationRef);

      await applicationRef.isStable.pipe(
        first(isStable => isStable == true)
      ).toPromise();

      applicationRef.tick();

      // Run any BEFORE_APP_SERIALIZED callbacks just before rendering to string.
      const callbacks = appModuleRef.injector.get(BEFORE_APP_SERIALIZED, null);
      if (callbacks) {
        for (const callback of callbacks) {
          try {
            callback();
          } catch (e) {
            // Ignore exceptions.
            console.warn('Ignoring BEFORE_APP_SERIALIZED Exception: ', e);
          }
        }
      }

      const platformState: PlatformState = appModuleRef.injector.get(PlatformState);

      document = platformState.renderToString();

    } catch (e) {

      // Write errors to console
      console.error('Angular SSR Error: ' + e.stack || e);

    } finally {

      //Make sure platform is destroyed before rendering

      if (platformRef) {
        platformRef.destroy();
      }
      const head = HEAD_REGEX.exec(document)[1];
      data.dynamicHead = head;
      const body = BODY_REGEX.exec(document)[1];
      data.dynamicBody = body;

    }
  })
開發者ID:Urigo,項目名稱:angular-meteor,代碼行數:91,代碼來源:main.ts

示例3: Error

  /**
   * Inject the State into the bottom of the <head>
   */
  inject() {
    try {
      const document: any = this.state.getDocument();
      const transferStateString = JSON.stringify(this.toJson());
      const renderer = this.rendererFactory.createRenderer(document, {
        id: '-1',
        encapsulation: ViewEncapsulation.None,
        styles: [],
        data: {}
      });

      const head = document.head;
      if (head.localName !== 'head') {
        throw new Error(
          'Please have <head> as the first element in your document'
        );
      }

      const script = renderer.createElement('script');
      renderer.setValue(
        script,
        `window['TRANSFER_STATE'] = ${transferStateString}`
      );
      renderer.appendChild(head, script);
    } catch (e) {
      console.error(e);
    }
  }
開發者ID:sumanbh,項目名稱:amazon-clone,代碼行數:31,代碼來源:server-transfer-state.ts

示例4: inject

  /**
   * Inject the State into the bottom of the <head>
   */
  inject() {
    try {
      const document: any = this.state.getDocument();
      const transferStateString = JSON.stringify(this.toJson());
      const renderer = this.rendererFactory.createRenderer(document, {
        id: '-1',
        encapsulation: ViewEncapsulation.None,
        styles: [],
        data: {}
      });

      const body = document.body;

      const script = renderer.createElement('script');
      renderer.setValue(script, `window['TRANSFER_STATE'] = ${transferStateString}`);
      renderer.appendChild(body, script);
    } catch (e) {
      console.log('Failed to append TRANSFER_STATE to body');
      console.error(e);
    }
  }
開發者ID:BHARAT703,項目名稱:aspnetboilerplate-samples,代碼行數:24,代碼來源:server-transfer-state.ts

示例5: function

 return function () {
   const doc = state.getDocument();
   const inlinePrebootCode = getInlinePrebootCode(opts);
   addInlineCodeToDocument(inlinePrebootCode, doc, rendererFactory);
 };
開發者ID:jeffwhelpley,項目名稱:preboot,代碼行數:5,代碼來源:server-preboot.module.ts


注:本文中的@angular/platform-server.PlatformState類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。