标签: angular-services

页面刷新后数据会消失,

现在我正在使用服务将数据从视图传递到其他视图(不同的控制器也是如此),在视图 A 中,我有控制器 CtrA,我用来传递数据的服务是:

.factory(
                'editreportservices',
                [
                        '$q',
                        'sessionId',
                        function($q, sessionId) {
                                var sharedata = {};
                                var org={};
                                function passed(data){
                                    sharedata = data;
                                };
                                function getsharedata(){
                                    return sharedata;
                                };
                                function passedorg(data) {
                                    org=data;
                                }
                                function getorg() {
                                    return org;
                                }
                                return{
                                    passed:passed,
                                    getsharedata:getsharedata,
                                    passedorg:passedorg,
                                    getorg:getorg
                                }               
                        }]);
Run Code Online (Sandbox Code Playgroud)

在 CtrA 中,如果我按下按钮,我将为 editreportservices.passed(report) 设置值,例如:

$scope.goeditpage = function(report){if(report){
                            editreportservices.passed(report);
                            }
                            else{
                            report={}
                            editreportservices.passed(report);
                            };
                       $state.go('editreport');
}
Run Code Online (Sandbox Code Playgroud)

并且它也将更改为视图 B,并且在 VIew BI 中可以使用 $scope.lin = editreportservices.getsharedata() 访问数据,它按预期工作。但是有一个问题,我不确定它是否是一个错误,如果用户刷新页面,从 viewA 传递的数据将消失。这可能是一个糟糕的用户体验,无论如何II可以在从VIewA传递之后将数据保留在viewB中吗?

model-view-controller angularjs angular-services

0
推荐指数
1
解决办法
3320
查看次数

AngularJS在定制服务中使用角度模块

我有一个用于生成令牌的自定义服务,在这个服务中我需要使用MD5功能,MD5功能在模块中 angular-md5

这是我的服务代码,角度模块generate_token使用的函数md5.createhash()但是我得到了错误:TypeError: Cannot read property 'createHash' of undefined

我想我做错了但我看不清楚

angular.module('app.services', ['angular-md5'])

.service('Auth', [function($scope, md5){
    var self = this;

    this.rand_alphanumeric = function() {
        var subsets = [];
        subsets[0] = [48, 57]; // ascii digits
        subsets[1] = [65, 90]; // ascii uppercase English letters
        subsets[2] = [97, 122]; // ascii lowercase English letters 

        // random choice between lowercase, uppercase, and digits
        s = Math.floor(Math.random() * 2) + 0
        ascii_code = Math.floor(Math.random() * (subsets[s][1] - subsets[s][0] + …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angular-services angular-module

0
推荐指数
1
解决办法
301
查看次数

Angular 2/4 +共享模块:forRoot()或不toRoot()

自从挖掘角度依赖注入(DI)的前几个基本级别,并且击中了用于Root()的gem之后,我一直想知道实际使用它的最佳实践是什么.

我偶然发现了这种方法,同时寻找一种允许延迟加载模块访问根上下文中的服务的方法,允许在两个模块之间共享数据流,其中一个或两个模块可能是延迟加载的.从那以后我想知道,你可以为共享模块中的所有内容使用forRoot()并在整个应用程序中保存大量的import语句吗?捕获量是多少?是否存在某些易于用于root的东西,以及其他不容易使用的东西?或者是root用于主要用于桥接延迟加载模块时桥接上述DI上下文问题?

rxjs typescript angular-services angular-module angular

0
推荐指数
1
解决办法
725
查看次数

对订阅可观察对象的方法之外的数据进行角度访问

我希望能够使用.subscribe访问我方法之外的数据

这是我的"工作"很好的服务

getSessionTracker(): Observable<ISessionTracker[]> {
    return this.http.get(this._url)
        .map((res: Response) => {
            let data = res.json();
            return data;
        })
       .catch(this.handleError)
} 
Run Code Online (Sandbox Code Playgroud)

组件是我的麻烦所在

sessionTrackers: ISessionTracker[] = [];  //  object array 

this.trackerService.getSessionTracker()
    .subscribe((sessionTrackers: ISessionTracker[]) => {
        this.sessionTrackers = sessionTrackers;
        console.log('real data in subscribe', this.sessionTrackers[0].SessionId);
    },
    (err: any) => console.log(err),
    () => console.log('getSessionTracker()'));
Run Code Online (Sandbox Code Playgroud)

//在功能之外这不起作用

 console.log('real data', this.sessionTrackers);
Run Code Online (Sandbox Code Playgroud)

2个问题

  1. 如果我执行console.log,则使用.subscribe的console.log INSIDE方法,但是this.sessionTrackers[0].SessionId 它是未定义的,但是this.this.sessionTrackers
  2. 这些数据不在方法之外

我该如何保存数据?

javascript observable typescript angular-services angular

0
推荐指数
1
解决办法
2050
查看次数

Rxjs 订阅触发多次

这是非常神秘的,我的订阅被多次触发 - 我不知道我的错误是什么 - 我在另一个人身上遵循了相同的方法,但它没有被多次触发

 @Injectable({
  providedIn: 'root'
})
export class CommonService {

  constructor() {
    this.getpatientId = this.bindPatientId.asObservable();
  }

  bindPatientId: Subject<number> = new Subject<number>();
  getpatientId: Observable<number>;

  setPatientId(patientId: number) {
    this.bindPatientId.next(patientId);
  }

  bindTabId: Subject<number> = new Subject<number>();
}
Run Code Online (Sandbox Code Playgroud)

设置新值Subject

 toggleProfile(patientId: number) {
    this.commonService.setPatientId(patientId);
    this.route.navigate(['/endrolPatient']);
  }
Run Code Online (Sandbox Code Playgroud)

从另一个组件监听

ngOnInit() {
    this._common.getpatientId.subscribe(
      (res) => {
        this.patientID = res;
        console.log("console inside observable", this.patientID);
      });
}
Run Code Online (Sandbox Code Playgroud)

在我的控制台中,当我通过时123- 我得到了console inside observable 123,但在第一个观察者休息后,所有订阅都加倍并在我的控制台中记录了两次 - 请帮助我修复它

rxjs typescript angular-services angular

0
推荐指数
1
解决办法
2536
查看次数

将一项服务注入另一项服务并可以访问注入的服务成员 Angular 7

我在这里阅读的所有内容: https: //angular.io/guide/dependency-injection-in-action使得这看起来应该是可能的,但是当尝试从另一个注入的服务上调用方法时,我收到此错误服务:

TypeError:无法在 CatchSubscriber.handleError [作为选择器] (project.service.ts:30) 处读取未定义的属性“isLoggedIn”,位于 TapSubscriber._error (tap.js:56) 处的 CatchSubscriber.error (catchError.js:29) 处TapSubscriber.error (Subscriber.js:55) 在 MapSubscriber._error (Subscriber.js:75) 在 MapSubscriber.error (Subscriber.js:55) 在 FilterSubscriber._error (Subscriber.js:75) 在 FilterSubscriber.error (Subscriber. js:55) 在 MergeMapSubscriber.notifyError (OuterSubscriber.js:7) 在 InnerSubscriber._error (InnerSubscriber.js:14)

这是我的ProjectService,正在注入我的UserService

import { Injectable } from '@angular/core';
import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';
import { Observable, throwError, of } from 'rxjs';
import { catchError, tap, map } from 'rxjs/operators';
import { AuthHeader } from '../../Shared/Helpers/AuthHeader';
import { UserService } from …
Run Code Online (Sandbox Code Playgroud)

typescript angular-services angular-components angular

0
推荐指数
1
解决办法
618
查看次数

服务不打印 console.log

我需要在我的 angular 应用程序中创建一个服务,所以我这样做:

@Injectable({
  providedIn: 'root'
})
export class PropertiesNameService  {

  products: string[] = [];

  constructor(private http: HttpClient) {
    console.log('HI');
    this.http.get('****').subscribe(data => {
    //   console.log(data);
   });
  }
}
Run Code Online (Sandbox Code Playgroud)

在我的 app.module 我这样做:

import {PropertiesNameService} from './propertiesName/properties-name.service';
....

providers: [PropertiesNameService],
Run Code Online (Sandbox Code Playgroud)

问题是,当我启动应用程序并打开控制台时,我看不到 "HI" 。我使用 angular 8 任何人都可以帮助我吗?

angular-services angular angular8

0
推荐指数
1
解决办法
414
查看次数

在 Angular 9 中使用 HttpModule(已弃用)

我最近从 Angular 4 更新到 9。我执行了以下操作:

  1. 创建新的 Angular 9 项目,将所有代码复制到 Angular 9 项目中
  2. 更新rxjs(必要时添加管道,删除连接)
  3. 修复了易于修复的警告(未使用的模块变量等)
  4. 安装HttpModule(已弃用)以消除与“找不到 HTTP”错误相关的错误并使我的项目重回正轨

我现在处于运行ng build / ng serve不会引发任何错误的阶段,并且我能够访问本地主机并获取我的登陆页面。但是,使用我的旧登录表单不起作用。CORS尽管我在其中设置了以下标头,但我不断收到错误express

app.use(function(req, res, next) {
  res.setHeader('Access-Control-Allow-Origin', '*');
  res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS');
  next();
});
Run Code Online (Sandbox Code Playgroud)

Relevant Package Details: "@angular/core": "~9.1.4" <-- all angular components are at this point, "@angular/common": "~9.1.4", "@angular/http": "^7.2.16", "express": "^4.17.1"

我的问题是:

  1. HTTP module是否可以像我想做的那样运行 Angular 9 应用程序?如果有人成功使用它,是否有任何配置更改/是否即插即用?
  2. CORS 错误是否可能与使用HTTP …

upgrade express angular-services angular

0
推荐指数
1
解决办法
8759
查看次数

在 angularjs 中使用工厂获取错误:[$injector:undef]

我正在创建一个新的 angular 应用程序并使用工厂,但是当我收到一个错误时

错误:[$injector:undef] http://errors.angularjs.org/1.4.5/ $injector/undef?p0=Data at Error (native) at https://ajax.googleapis.com/ajax/libs/ angularjs/1.4.5/angular.min.js:6:416 在 Object.$get ( https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:37:32 ) 在 Object.e [as invoke] ( https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:39:96 ) 在https://ajax.googleapis.com /ajax/libs/angularjs/1.4.5/angular.min.js:40:410 在 d ( https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:38 :308 ) 在 e ( https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:39:64) 在 Object.g.instantiate ( https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:39:213 ) 在 b.$get ( https://ajax. googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:80:257 ) 在 s ( https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular-route .min.js:12:165 )

    var app = angular.module('testapp', ['ngRoute']);
        app.config(['$routeProvider',
          功能($routeProvider){
                $routeProvider.
                当('/用户列表',{
                    title: '所有用户列表',
                    templateUrl: 'userlist.html',
                    控制器:'列表用户'
                })
                .when('/个人资料',{
                    title:'用户详情页面',
                    templateUrl:'profile.html',
                    控制器:'listuser'
                })
                。除此以外({
                    重定向到:'/用户列表'
                });
        }])

        app.factory("数据", …

factory angularjs angular-services

-1
推荐指数
1
解决办法
3798
查看次数