title: How to mock window and document object for ngx-bootstrap modal window
body: <p>I set up server side rendering with Angular 8, Angular universe, ngx-bootstrap and I get error</p>
  
  <p>ERROR ReferenceError: document is not defined
      at ModalContainerComponent.ngOnInit (/Users/user/project/dist/server.js:243925:9)
      at checkAndUpdateDirectiveInline (/Users/user/project/dist/server.js:23530:19)
      at checkAndUpdateNodeInline (/Users/user/project/dist/server.js:31788:20)
      at checkAndUpdateNode (/Users/user/project/dist/server.js:31750:16)
      at prodCheckAndUpdateNode (/Users/user/project/dist/server.js:32291:5)
      at Object.updateDirectives (/Users/user/project/dist/server.js:137344:457)
      at Object.updateDirectives (/Users/user/project//server.js:32079:72)
      at Object.checkAndUpdateView (/Users/user/project//server.js:31732:14)
      at ViewRef_.detectChanges (/Users/user/project//server.js:23119:22)
      at ComponentLoader.show (/Users/user/project//server.js:241722:50)</p>
  
  <p>I tried to use domino in my server file but it didn't help</p>
  
  <pre><code>"dependencies": {
      "@angular/animations": "^8.0.0",
      "@angular/cdk": "^8.0.0",
      "@angular/common": "^8.0.0",
      "@angular/compiler": "^8.0.0",
      "@angular/core": "^8.0.0",
      "@angular/forms": "^8.0.0",
      "@angular/material": "^8.0.0",
      "@angular/platform-browser": "^8.0.0",
      "@angular/platform-browser-dynamic": "^8.0.0",
      "@angular/platform-server": "^8.0.0",
      "@angular/router": "^8.0.0",
      "@nguniversal/express-engine": "^7.0.2",
      "@nguniversal/module-map-ngfactory-loader": "v7.0.2",
      "@ngx-translate/core": "^10.0.2",
      "@ngx-translate/http-loader": "^3.0.1",
      "@types/lodash": "4.14.108",
      "angular-font-awesome": "3.1.2",
      "bootstrap": "4.1.3",
      "core-js": "^2.4.1",
      "express": "^4.15.2",
      "font-awesome": "4.7.0",
      "lodash": "4.17.4",
      "moment": "2.22.2",
      "ng-recaptcha": "4.2.1",
      "ngx-bootstrap": "5.0.0",
      "rxjs": "^6.5.2",
      "tslib": "^1.9.0",
      "zone.js": "~0.9.1"
    },
    "devDependencies": {
      "@angular-devkit/build-angular": "~0.800.0",
      "@angular/cli": "8.0.2",
      "@angular/compiler-cli": "^8.0.0",
      "@angular/language-service": "^8.0.0",
      "@types/jasmine": "~2.8.3",
      "@types/jasminewd2": "~2.0.2",
      "@types/node": "^6.0.60",
      "codelyzer": "^5.0.1",
      "gulp": "^3.9.1",
      "gulp-sass": "^4.0.1",
      "gulp-watch": "^5.0.0",
      "jasmine-core": "~2.8.0",
      "jasmine-spec-reporter": "~4.2.1",
      "karma": "^2.0.0",
      "karma-chrome-launcher": "~2.2.0",
      "karma-coverage-istanbul-reporter": "^1.2.1",
      "karma-jasmine": "~1.1.0",
      "karma-jasmine-html-reporter": "^0.2.2",
      "protractor": "~5.1.2",
      "ts-loader": "^5.2.0",
      "ts-node": "~4.1.0",
      "tslint": "~5.9.1",
      "tslint-sonarts": "^1.9.0",
      "typescript": "~3.4.5",
      "webpack-bundle-analyzer": "^3.3.2",
      "webpack-cli": "^3.1.0"
    }
  </code></pre>
  
  <p>server.ts</p>
  
  <pre><code>import 'zone.js/dist/zone-node';
  import 'reflect-metadata';
  import {enableProdMode} from '@angular/core';
  // Express Engine
  import {ngExpressEngine} from '@nguniversal/express-engine';
  // Import module map for lazy loading
  import {provideModuleMap} from '@nguniversal/module-map-ngfactory-loader';
  
  import * as express from 'express';
  import {join} from 'path';
  
  // Faster server renders w/ Prod mode (dev mode never needed)
  enableProdMode();
  
  // Express server
  const app = express();
  
  const PORT = process.env.PORT || 4000;
  const DIST_FOLDER = join(process.cwd(), 'dist/browser');
  
  // * NOTE :: leave this as require() since this file is built Dynamically from webpack
  const {AppServerModuleNgFactory, LAZY_MODULE_MAP} = require('./dist/server/main');
  
  // Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine)
  app.engine('html', ngExpressEngine({
    bootstrap: AppServerModuleNgFactory,
    providers: [
      provideModuleMap(LAZY_MODULE_MAP)
    ]
  }));
  
  app.set('view engine', 'html');
  app.set('views', DIST_FOLDER);
  
  // Example Express Rest API endpoints
  // app.get('/api/**', (req, res) =&gt; { });
  // Server static files from /browser
  app.get('*.*', express.static(DIST_FOLDER, {
    maxAge: '1y'
  }));
  
  // All regular routes use the Universal engine
  app.get('*', (req, res) =&gt; {
    res.render('index', { req });
  });
  
  // Start up the Node server
  app.listen(PORT, () =&gt; {
    console.log(`Node Express server listening on http://localhost:${PORT}`);
  });
  </code></pre>