GVKun编程网logo

JS 文件不能在 angular 中工作,但可以在普通的 HTML、CSS+JS 中工作(为什么js文件不起作用)

2

在本文中,我们将给您介绍关于JS文件不能在angular中工作,但可以在普通的HTML、CSS+JS中工作的详细内容,并且为您解答为什么js文件不起作用的相关问题,此外,我们还将为您提供关于Angul

在本文中,我们将给您介绍关于JS 文件不能在 angular 中工作,但可以在普通的 HTML、CSS+JS 中工作的详细内容,并且为您解答为什么js文件不起作用的相关问题,此外,我们还将为您提供关于Angular 12 升级问题与包 @angular-devkit/builder-angular 中的 css-what 版本相关、Angular 12.0.5 HMR 不工作,不重新加载模块,不重新加载页面实时重新加载,Angular 11.0.6 重新加载整个页面 调查 Angular 构建系统使用的版本配置 webpack使用 Angular 12.0.5 / next.6 时 - 没有帮助、Angular 2+ (RTL) 如何将 HTML 标记添加到使用 Angular FormControl 构建的 HTML 输入值、angular j j angular j angular angular service service service j的知识。

本文目录一览:

JS 文件不能在 angular 中工作,但可以在普通的 HTML、CSS+JS 中工作(为什么js文件不起作用)

JS 文件不能在 angular 中工作,但可以在普通的 HTML、CSS+JS 中工作(为什么js文件不起作用)

如何解决JS 文件不能在 angular 中工作,但可以在普通的 HTML、CSS+JS 中工作

基本上我正在尝试创建一个这样的下拉列表。但问题是:单击 angular 中的下拉按钮没有任何反应,而它在不使用图像中的 angular 的情况下工作正常。 尽管我尝试仅使用向网页发出警报的 alert("Hello World") 以角度运行 JS 文件。这意味着 JS 文件已正确链接,但此代码以某种方式无法在 angular 中工作。请帮我解决这个问题!

  1. var dropdown = document.getElementsByClassName("dropdown-btn");
  2. var i;
  3. for (i = 0; i < dropdown.length; i++) {
  4. dropdown[i].addEventListener("click",function () {
  5. var dropdownContent = this.nextElementSibling;
  6. if (dropdownContent.style.display === "block") {
  7. dropdownContent.style.display = "none";
  8. } else {
  9. dropdownContent.style.display = "block";
  10. }
  11. });
  12. }
  1. .tabs{
  2. position: absolute;
  3. top: 280px;
  4. width: 100%;
  5. }
  6. .dropdown-btn{
  7. text-decoration: none;
  8. border: none;
  9. background: none;
  10. display: block;
  11. padding-left: 53px;
  12. font-family: Work Sans;
  13. font-style: normal;
  14. font-weight: bold;
  15. font-size: 24px;
  16. line-height: 28px;
  17. letter-spacing: -0.02em;
  18. text-transform: uppercase;
  19. color: #F8F7F3;
  20. }
  21. .dropdown-container{
  22. text-decoration: none;
  23. padding-left: 63px;
  24. display: none;
  25. background-color:#20737A;
  26. width: 100%;
  27. margin: auto;
  28. }
  29. .dropdown-container a{
  30. text-decoration: none;
  31. display: block;
  32. padding-bottom: 10px;
  33. font-weight: bold;
  34. font-size: 18px;
  35. }
  1. <div class="sidenav">
  2. <div class="items" id="item-0"><a href="#">The Senior Survey</a></div>
  3. <div class="tabs">
  4. <button class="items dropdown-btn">ACADEMICS</button>
  5. <div class="dropdown-container">
  6. <a href="#" id="comp-1">Department</a>
  7. <a href="#" id="comp-2">CPI</a>
  8. </div>

解决方法

通过 vanilla JS 的 DOM 操作在 Angular 中不起作用。

你需要用 Angular 的方式来做。

在 HTML 中,您添加一个 click 方法来切换下拉列表。并在下拉容器中使用相同的变量来显示/隐藏使用 *ngIf

  1. <div class="sidenav">
  2. <div class="items" id="item-0"><a href="#">The Senior Survey</a></div>
  3. <div class="tabs">
  4. <button class="items dropdown-btn" (click)="showDropdown=!showDropdown">ACADEMICS</button>
  5. <div class="dropdown-container" *ngIf="showDropdown">
  6. <a href="#" id="comp-1">Department</a>
  7. <a href="#" id="comp-2">CPI</a>
  8. </div>

在您的组件

中添加这个变量 showDropdown
  1. @Component({...})
  2. export class YourComponent {
  3. showDropdown:boolean = false;
  4. }

Angular 12 升级问题与包 @angular-devkit/builder-angular 中的 css-what 版本相关

Angular 12 升级问题与包 @angular-devkit/builder-angular 中的 css-what 版本相关

如何解决Angular 12 升级问题与包 @angular-devkit/builder-angular 中的 css-what 版本相关

我正在升级我的 Angular 项目。我已按照此处 https://update.angular.io/ 提到的所有步骤进行操作。在那之后,除了与@angular-devkit/builder-angular 相关的一个高问题之外,我能够解决所有问题。

这是导致构建失败的问题。

高度拒绝服务

封装css-what

已在 >=5.0.1 中修补

依赖@angular-devkit/build-angular [dev]

Path @angular-devkit/build-angular > css-minimizer-webpack-plugin
> cssnano > cssnano-preset-default > postcss-svgo > svgo >
css-select > css-what ```

found 3 vulnerabilities (2 moderate,1 high) in 1651 scanned packages
3 vulnerabilities require manual review. See the full report for details.


I have tried updating using all the version @angular-devkit/builder-angular available,but no luck. You can see some of the version which i have tried below.

```-- @angular-devkit/build-angular@12.0.2 
-- css-minimizer-webpack-plugin@3.0.0
-- cssnano@5.0.6 -- cssnano-preset-default@5.1.3
-- postcss-svgo@5.0.2 -- svgo@2.3.0
-- css-select@3.1.2 -- css-what@4.0.0

-- @angular-devkit/build-angular@12.0.5 
-- css-minimizer-webpack-plugin@3.0.0
-- cssnano@5.0.6 -- cssnano-preset-default@5.1.3
-- postcss-svgo@5.0.2 -- svgo@2.3.0
-- css-select@3.1.2 -- css-what@4.0.0

-- @angular-devkit/build-angular@12.1.0-next.6 
-- css-minimizer-webpack-plugin@3.0.1
-- cssnano@5.0.6 -- cssnano-preset-default@5.1.3
-- postcss-svgo@5.0.2 -- svgo@2.3.0
-- css-select@3.1.2 -- css-what@4.0.0 ```

In above @angular-devkit/build-angular is excepting css-what version should be >= 5.0.1 which I am not able to find.

Which version of @angular-devkit/builder-angular@? i need to install so that css-what >= 5.0.1 . Then only that high issue will get resolve.

```FYI
Node version - v12.18.2
npm - 6.14.5
"dependencies": {
"@angular-devkit/core": "^12.0.2","@angular/animations": "^12.0.2","@angular/common": "^12.0.2","@angular/compiler": "^12.0.2","@angular/core": "^12.0.2","@angular/forms": "^12.0.2","@angular/localize": "^12.0.2","@angular/platform-browser": "^12.0.2","@angular/platform-browser-dynamic": "^12.0.2","@angular/platform-server": "^12.0.2","@angular/router": "^12.0.2","@angular/service-worker": "^12.0.2","@fortawesome/fontawesome-free": "^5.15.3","@ng-bootstrap/ng-bootstrap": "^9.1.2","@ng-select/ng-select": "^5.1.0","@ngrx/store-devtools": "^6.1.0","ag-grid": "^18.1.2","ag-grid-angular": "^18.1.0","ag-grid-community": "^19.0.0","angular2-text-mask": "^9.0.0","autoprefixer": "^10.2.6","classlist.js": "^1.1.20150312","compass-mixins": "^0.12.10","core-js": "^2.6.12","jquery": "^3.6.0","moment": "^2.29.1","ng6-toastr": "^6.0.0","ngx-bootstrap": "^6.2.0","ngx-moment": "^3.2.0","ngx-spinner": "^6.1.2","ngx-toastr": "^14.0.0","postcss-scss": "^3.0.5","rxjs": "^6.6.7","rxjs-compat": "^6.6.7","zone.js": "^0.11.4"
},"devDependencies": {
"@angular-devkit/build-angular": "^12.1.0-next.6","@angular/cli": "^12.0.2","@angular/compiler-cli": "^12.0.2","@angular/language-service": "^12.0.2","@ngrx/store": "^12.1.0","@types/jasmine": "^3.7.6","@types/jasminewd2": "^2.0.9","@types/node": "^15.6.1","codelyzer": "^6.0.2","jasmine-core": "^3.7.1","jasmine-spec-reporter": "^7.0.0","jspm": "^0.16.53","karma": "^6.3.3","karma-chrome-launcher": "^3.1.0","karma-coverage-istanbul-reporter": "^3.0.3","karma-jasmine": "^4.0.1","karma-jasmine-html-reporter": "^1.6.0","protractor": "^7.0.0","ts-node": "^8.3.0","tslint": "^6.1.0","typescript": "^4.2.4"
},```

>quote Thanks in advance,early reply will be appreciated.

解决方法

我能够按照这个人的建议解决这个问题:https://stackoverflow.com/a/62956076/6610617

基本上使用 npm 包 npm-force-resolutions,您可以在 package.json 文件中设置“分辨率”,并强制将任何依赖项安装到您指定的版本。

我能够在分辨率中设置 "css-what": "5.0.1" 并解决了我的问题。

Angular 12.0.5 HMR 不工作,不重新加载模块,不重新加载页面实时重新加载,Angular 11.0.6 重新加载整个页面 调查 Angular 构建系统使用的版本配置 webpack使用 Angular 12.0.5 / next.6 时 - 没有帮助

Angular 12.0.5 HMR 不工作,不重新加载模块,不重新加载页面实时重新加载,Angular 11.0.6 重新加载整个页面 调查 Angular 构建系统使用的版本配置 webpack使用 Angular 12.0.5 / next.6 时 - 没有帮助

如何解决Angular 12.0.5 HMR 不工作,不重新加载模块,不重新加载页面实时重新加载,Angular 11.0.6 重新加载整个页面 调查 Angular 构建系统使用的版本配置 webpack使用 Angular 12.0.5 / next.6 时 - 没有帮助

Angular HMR 不替换/重新加载组件

  • 实时重载适用于 11.0.6 和 12.1.0-next.6。
  • Angular 12.0.5 根本不会重新加载。

任何人都可以使用它并且可以提供一个有效的示例应用程序?

给定:一个简单的入门应用

(来自故事书 https://github.com/chromaui/intro-storybook-angular-template)

使用 Angular 11.0.6

然后 HMR 开箱即用并不能按预期工作,但完全重新加载可以(即启用 [WDS] 实时重新加载。)

更新到 Angular 12.0.5 时

然后 HMR 不会重新加载任何东西。 (根本没有实时重新加载)

12.0.5 行为:更新角度组件时不重新加载。

控制台错误(chrome):

dev-server.js:60 Uncaught Error: [HMR] Hot Module Replacement is disabled.
    at Object.5033 (dev-server.js:60)
    at __webpack_require__ (bootstrap:19)
    at __webpack_exec__ (polyfills.js:12907)
    at polyfills.js:12908
    at webpackJsonpCallback (jsonp chunk loading:35)
    at polyfills.js:1

编辑组件 (HTML) 后,控制台“卡住”“[WDS] 应用热更新...”

更新到 Angular 12.1.0-next.6 时"

结果与 v11 相同(然后 HMR 开箱即用,但完全重新加载可以(即启用 [WDS] 实时重新加载。)

webpack-dev-server 是原因(可能与 webpack 5.3 一起)

经过一番挖掘,我意识到这与 webpack-dev-server 有关。

  • https://github.com/webpack/webpack-dev-server/issues/2758

一个解决方案似乎是将 webpack 目标设置为 web(而不是浏览器)进行开发。或者使用测试版的 webpack-dev-server(即 4.0.0-beta.x)

"target: ''web'',

调查 Angular 构建系统使用的版本

在“node_modules/@angular-devkit/build-webpack/package.json”中使用了 webpack-dev-server。

对于 "@angular-devkit/build-angular": "~12.0.5",webpack-dev-server 版本为 3.11.2

"peerDependencies": { "webpack": "^5.30.0","webpack-dev-server": "^3.11.2" },

将 Angular 更新为 v-next 时 对于 "@angular-devkit/build-angular": "^12.1.0-next.6",webpack-dev-server 版本较低,为 3.1.4,与 ''build-angular'' v11 相同。 (可能是因为他们意识到实时重新加载的问题)

"peerDependencies": { "webpack": "^5.30.0","webpack-dev-server": "^3.1.4" },

使用 Angular 11 时 对于“@angular-devkit/build-angular”:“~0.1100.6”

"peerDependencies": { "webpack": "^4.6.0",

配置 webpack(使用 Angular 12.0.5 / next.6 时) - 没有帮助

根据以下资源配置,使用@angular-builders/custom-webpack

没有帮助。帮助! =D

  • https://github.com/just-jeb/angular-builders/tree/master/packages/custom-webpack#Custom-webpack-dev-server
  • https://github.com/just-jeb/angular-builders/blob/master/packages/custom-webpack/examples/full-cycle-app/extra-webpack.config.ts
//package.json
"devDependencies": {
    "@angular-builders/custom-webpack": "^12.1.0",
//angular.json
//replace "builder" in "build" and "serve"
//add customWebpackConfig with path to a new config file
//"builder": "@angular-devkit/build-angular:browser"
    "architect": {
        "build": {
          "builder": "@angular-builders/custom-webpack:browser","options": {
            "customWebpackConfig": {
              "path": "extra-webpack.config.ts","replaceDuplicatePlugins": true
           },//...
         //replace   "builder": "@angular-devkit/build-angular:dev-server","serve": {
           "builder": "@angular-builders/custom-webpack:dev-server",
//extra-webpack.config.ts
import { Configuration } from "webpack";

export default {
    target:"web",// target: process.env.NODE_ENV === "development" ? "web" : "browserslist",} as Configuration;

解决方法

我们有一些与您介绍的类似的东西。您是否删除了 package_lock、node_modules 并进行了全新安装?

在 Angular 11.2.4 和新的 Angular 12.1.4 项目中,使用 HRM 进行设置没有问题。 尝试使用 "@angular-builders/custom-webpack": "12.1.0","@angular-devkit/build-angular": "^12.1.4" 它应该可以工作

Angular 2+ (RTL) 如何将 HTML 标记添加到使用 Angular FormControl 构建的 HTML 输入值

Angular 2+ (RTL) 如何将 HTML 标记添加到使用 Angular FormControl 构建的 HTML 输入值

如何解决Angular 2+ (RTL) 如何将 HTML 标记添加到使用 Angular FormControl 构建的 HTML 输入值

早上好,

问题: 我正在处理带有用户名和密码输入的 Angular 登录页面。

用户可以通过记住它来获取用户名,所以下次用户登录时,用户名将自动填充但带有掩码(计算):user777 -> ****777

有一个使用 Angular FormControl 构建的输入,我需要向输入值添加一个 HTML 标记或其 unicode 值。

https://www.w3.org/International/articles/inline-bidi-markup/#lrmrlm

我有什么<input type="text"[formControl]="formControlVar"/>

我想达到什么目的:<input value="&lrm;****720">

为什么? 在使用 !?* 等特殊字符时保持 RTL 显示和输入正确的行为。

这不起作用formControl.setValue(''&lrm;****720''),我找不到其他方法

JSfiddle 我想要实现的目标:http://jsfiddle.net/52tL8rzc/91/

我希望有人已经遇到了这个问题,可以给我一点启发:)

提前致谢。

angular j j angular j angular angular service service service j

angular j j angular j angular angular service service service j

我试图写一个业务/茉莉花测试,我想要一些关于mocks如何在一个正在退回承诺的服务上的解释。我解释我的情况:

我有一个控制器,我在其中进行以下调用:

mapService.getMapByUuid(mapUUID,isEditor).then(function(datas){
    fillMapDatas(datas);
});

function fillMapDatas(datas){
    if($scope.elements === undefined){
        $scope.elements = [];
    }
 //Here while debugging my unit test,'datas' contain the promise javascript object instead //of my real reponse.
   debugger;
    var allOfThem = _.union($scope.elements,datas.elements);

    ...

以下是我的服务:

(function () {
'use strict';

var serviceId = 'mapService';

angular.module('onmap.map-module.services').factory(serviceId,[
    '$resource','appContext','restHello','restMap',serviceFunc]);

function serviceFunc($resource,appContext,restHello,restMap) {

    var Maps = $resource(appContext+restMap,{uuid: '@uuid',editor: '@editor'});

    return{          
        getMapByUuid: function (uuid,modeEditor) {
            var maps = Maps.get({'uuid' : uuid,'editor': modeEditor});
            return maps.$promise;
        }
    };
}

})();

最后,这是我的单位测试:

describe('Map controller',function() {
var $scope,$rootScope,$httpBackend,$timeout,createController,MapService,$resource;

beforeEach(module('onmapApp'));

beforeEach(inject(function($injector) {
    $httpBackend = $injector.get('$httpBackend');
    $rootScope = $injector.get('$rootScope');
    $scope = $rootScope.$new();

    var $controller = $injector.get('$controller');

    createController = function() {
        return $controller('maps.ctrl',{
            '$scope': $scope
        });
    };
}));

afterEach(function() {
    $httpBackend.verifyNoOutstandingExpectation();
    $httpBackend.verifyNoOutstandingRequest();
});

var response = {"elements":[1,2,3]};

it('should allow user to get a map',function() {

    var controller = createController();
    $httpBackend.expect('GET','/onmap/rest/map/MY-UUID?editor=true')
        .respond({
            "success": response
        });


// hope to call /onmap/rest/map/MY-UUID?editor=true url and hope to have response as the fillMapDatas parameter
    $scope.getMapByUUID('MY-UUID',true); 

    $httpBackend.flush();
});
});

我真正想要做的是将我的响应对象({“elements:…})作为fillMapDatas函数的datas参数,我不明白如何模拟所有的服务(服务,承诺,然后)

提前感谢您的帮助

所以你想测试,如果你的服务响应如预期的?然后,这是你想要的服务测试。基于单元测试的方法可能如下所示:
var mapService,$q,$rootScope;

beforeEach(inject(function (_mapService_,_$httpBackend_,_$q_,_$rootScope_) {
  mapService = mapService;
  $httpBackend = _$httpBackend_;
  $q = _$q_;
  $rootScope = _$rootScope_;

  // expect the actual request
  $httpBackend.expect('GET','/onmap/rest/map/uuid?editor=true');

  // react on that request
  $httpBackend.whenGET('/onmap/rest/map/uuid?editor=true').respond({
    success: {
      elements: [1,3]
    }
  });
}));

您可以看到,您不需要使用$ inject,因为您可以直接注入所需的服务。如果您想在整个测试中使用正确的服务名称,您可以使用前缀和后缀“_”注入它们,注入()足够聪明地识别出您的意思。我们还为每个it()规范设置$ httpBackend mock。并且我们设置$ q和$ rootScope进行后续处理。

以下是您如何测试您的服务方法返回承诺:

it('should return a promise',function () {
  expect(mapService.getMapUuid('uuid',true).then).tobedefined();
});

由于承诺总是有一个.then()方法,我们可以检查这个属性,看看它是否是一个承诺(当然,其他对象也可以使用这个方法)。

接下来,您可以用适当的价值测试您得到的解决方案的承诺。您可以设置您明确解析的延迟。

it('should resolve with [something]',function () {
  var data;

  // set up a deferred
  var deferred = $q.defer();
  // get promise reference
  var promise = deferred.promise;

  // set up promise resolve callback
  promise.then(function (response) {
    data = response.success;
  });

  mapService.getMapUuid('uuid',true).then(function(response) {
    // resolve our deferred with the response when it returns
    deferred.resolve(response);
  });

  // force `$digest` to resolve/reject deferreds
  $rootScope.$digest();

  // make your actual test
  expect(data).toEqual([something]);
});

希望这可以帮助!

关于JS 文件不能在 angular 中工作,但可以在普通的 HTML、CSS+JS 中工作为什么js文件不起作用的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Angular 12 升级问题与包 @angular-devkit/builder-angular 中的 css-what 版本相关、Angular 12.0.5 HMR 不工作,不重新加载模块,不重新加载页面实时重新加载,Angular 11.0.6 重新加载整个页面 调查 Angular 构建系统使用的版本配置 webpack使用 Angular 12.0.5 / next.6 时 - 没有帮助、Angular 2+ (RTL) 如何将 HTML 标记添加到使用 Angular FormControl 构建的 HTML 输入值、angular j j angular j angular angular service service service j等相关内容,可以在本站寻找。

本文标签:

上一篇如何使用 CSS 动画在文本块上方的 2 秒内使文本滑动(css 文字动画)

下一篇ASP.NET MVC Razor 页面在屏幕上看起来不错,但在尝试打印页面时格式不正确 我的页面我的 CSS